如何创buildiPad文档预览界面,如在iWorks for iPad中find的界面
愿意给一个+500赏金作为一个工作的例子。
我只知道在iPad上完成文档预览界面的两个源代码示例,如在Number,Pages等中find的示例。
infoNgen和OmniGroup框架
还有其他的例子吗? infoNgen
是一个很好的简单例子,但是,代码是非常草率的,可怕的书面,非常无组织。
OmniGroup
是一个很棒的库,但对于简单的项目来说太复杂了。
更新
我能够分解infoNgen的项目,并使用HTML预览制作一个准系统文档查看器,这似乎与更新文档中的信息并保持与预览同步很好。 现在唯一需要解决的问题是将文档保存在应用程序退出并重新启动时。 +500赏金仍然可以用一个工作的例子,但是,除非有工作实例发布,否则我不会打开赏金。
“包装视图”是将显示您的整个预览轮播的主视图控制器。
“传送带”本身就是一个UIScrollView。 只需创build滚动视图并将pagingEnabled
属性设置为YES
。 通过设置框架将其设置为合适的尺寸,然后将其添加到包装视图控制器中。 您还需要将轮播视图的contentSize
属性设置得足够大。 通过乘以文档数量,再乘以另外两个文档的宽度,乘以传送带的宽度来计算此值。 如果您希望两边的文档显示一些,则将文档数乘以滚动视图的宽度减去几个像素。
编辑
其实,这个问题有点让我知道这个post ,描述了一个实现这个的替代方法。 实质上,你将自定义UIView子类中的滚动视图封装到UIScrollView中。 这是必要的,因为一个UIScrollView只能“页”的页面一样宽。 使用我的“用几个像素调整侧视图”的方法,你会得到一个很好的预览,但是偏移将导致预览在滚动时跳转。 (我试着把我的方法扔在一起的示例代码。正如我刚才解释,它不起作用。)我要在使用自定义包装之前尝试更多的方法。 (我想知道内容插入是否可行。)
结束编辑
请注意,正如Matthew在评论中正确地指出的那样,您实际上只是创build了您需要的3个视图,如后面所述。
您的文档预览可以是任何您喜欢的对象,正如您所提到的,可以使用UIWebView来呈现HTML。 不pipe你想用什么来表示你的缩略图,诀窍就是把它们放在外面。
我假设你有一个对象数组,虽然你可能正在使用核心数据来存储你的信息。 要显示文档预览,请将其添加到滚动视图中,但在“X”坐标的正确位置。 要计算该值,请将当前文档的索引乘以滚动视图的宽度。 使用文档预览的setFrame
方法应用此值。 您还需要在当前和之后的预览之前进行预览,所以您拥有stream畅的animation。
为了处理渲染和滚动,你将要把你的包装成UIScrollViewDelegate。 代表应该告诉UIScrollView每次滚动animation完成时移除并重新呈现滚动视图。
为了处理“轮换效应”(在第一个和最后一个文档之间发生的循环),你的UIScrollViewDelegate应该检查contentOffset
属性,并确定我们是否在最后一个对象。 如果最后一个对象正在显示,则将第一个对象渲染到右侧,就像其他任何对象一样。 如果正确的对象然后滚动,您使用[scrollView scrollToRect: CGRectMake(0,0,scrollView.rect.size.width,scrollView.rect.sizeheight) animated:NO];
代码无缝跳转到开始。 (对于第一个预览执行相同的操作,渲染左边的第一个和最后一个,如有必要,以相同的方式处理)。
我希望这个答案有所帮助。 我会尽可能地发布代码。
祝你好运!
编辑2:
现在我想起来了,这个整个分页控件可以打包成一个UIScrollView的子类或者类。 我要去尝试这个。