如何创建类似iWorks for iPad的iPad文档预览界面 愿意为一个工作示例奖励+500奖金。

如何创建类似iWorks for iPad的iPad文档预览界面 愿意为一个工作示例奖励+500奖金。,ipad,ios,user-interface,document-carousel,document-preview,Ipad,Ios,User Interface,Document Carousel,Document Preview,据我所知,在iPad上实现文档预览界面的源代码示例只有两个,如数字、页面等 及 还有其他例子吗infoNgen是一个很好的简单示例,但是,代码非常松散,编写得非常糟糕,非常无序 OmniGroup是一个很棒的库,但对于简单的项目来说太复杂了 更新 我能够分解infoNgen的项目,制作一个带有HTML预览的裸体文档查看器,它似乎可以很好地更新文档中的信息,并使其与预览保持同步。现在要解决的唯一问题是保存文档以备应用程序退出并重新启动时使用对于一个工作示例,+500赏金仍然可用,但是,除非发布了

据我所知,在iPad上实现文档预览界面的源代码示例只有两个,如数字、页面等

还有其他例子吗
infoNgen
是一个很好的简单示例,但是,代码非常松散,编写得非常糟糕,非常无序

OmniGroup
是一个很棒的库,但对于简单的项目来说太复杂了

更新 我能够分解infoNgen的项目,制作一个带有HTML预览的裸体文档查看器,它似乎可以很好地更新文档中的信息,并使其与预览保持同步。现在要解决的唯一问题是保存文档以备应用程序退出并重新启动时使用对于一个工作示例,+500赏金仍然可用,但是,除非发布了工作示例,否则我不会打开赏金。

包装器视图是显示整个预览转盘的主视图控制器

“旋转木马”本身就是一个UIScrollView。只需创建滚动视图并将
paginEnabled
属性设置为
YES
。通过设置框架将其布局到适当的尺寸,然后将其添加到包装器视图控制器。您还需要将转盘视图的
contentSize
属性设置为足够大。计算方法是将文档数加上另外两个文档的宽度乘以旋转木马的宽度。如果希望两侧的文档显示一点,则将文档数乘以滚动视图的宽度减去几个像素

编辑

实际上,通过谷歌搜索这个问题,我找到了另一种实现方法。本质上,您将滚动视图包装在自定义UIView子类中,该子类将触摸转发到UIScrollView。这是必要的,因为UIScrollView只能为尽可能宽的页面创建“页面”。使用我的“通过几个像素调整侧视图”方法,您最终会得到一个很好的预览,但是偏移会导致预览在滚动时跳转。(我在编写示例代码时尝试了我的方法。正如我刚才解释的,它不起作用。)在使用自定义包装器之前,我将尝试另外一种方法。(我想知道内容插入是否有效。)

结束编辑

请注意,正如Matthew在评论中正确指出的那样,您实际上只创建了所需的3个视图,如下文所述

您的文档预览可以是您喜欢的任何对象,正如您所提到的,UIWebView可以用于呈现HTML。不管你想用什么来表示你的缩略图,诀窍就是把它们摆出来

我假设您有一个对象数组,尽管您可能使用核心数据来存储信息。若要显示文档预览,请将其添加到滚动视图中,但要将其添加到沿“X”坐标的正确位置。要计算该值,请将当前文档的索引乘以滚动视图的宽度。使用文档预览的
setFrame
方法应用此值。您还需要在当前预览之前渲染预览,然后渲染预览,这样您就有了平滑动画

要处理渲染和滚动,您需要将包装器制作成UIScrollViewDelegate。每次滚动动画完成时,代理应该告诉UIScrollView删除并重新渲染滚动视图

要处理“旋转木马效应”(在第一个文档和最后一个文档之间发生的循环),您的UIScrollViewDelegate应该检查
contentOffset
属性并确定我们是否位于最后一个对象。如果显示的是最后一个对象,请将第一个对象向右渲染,就像渲染其他对象一样。如果右对象随后被滚动到,则使用
[scrollView scrollToRect:CGRectMake(0,0,scrollView.rect.size.width,scrollView.rect.sizeheight)动画:否]无缝跳转到开头的代码。(对第一次预览执行相同操作。在左侧渲染第一次和最后一次预览,必要时以相同方式处理)

我希望这个答案能有所帮助。我会在可能的时候发布代码

祝你好运

编辑2:


现在我考虑一下,整个分页控件可以打包到UIScrollView子类或类别中。我要试着做这件事。

你到底在找什么?滚动“旋转木马”视图?还是能够呈现文档的大缩略图?你在处理什么样的文件?(后者将取决于您的文档是什么。)您是在寻找现有代码还是实现/设计讨论?旋转木马以及文档预览渲染。文档可以呈现或保存为HTML。至于保存,您是否查看过核心数据?(顺便说一句,在预览转盘上工作。)顺便说一下,最新的更新(1.4)似乎不再像那样滚动了。我同意你的大部分建议(因此是+1),但没有必要为所有文档留出空间;事实上,这样做是超级内存效率低下的。相反,在scrollview中只需要3个视图,因为只有3个视图是可见的。当一个从两边滑下时,它被重新调整为新的滑入。今年夏天WWDC的第104节,设计具有滚动视图的应用程序,展示了如何做到这一点:(你必须注册为苹果开发人员才能下载视频,但无需付费帐户即可)。我知道你实际上并没有创建所有视图,我知道这是多么低效,但是您仍然应该在contentSize中创建空间,以便可以更轻松地进行滚动计算。编辑:谢谢你指出这段视频。我会去看的。你们中有人能给我发一些工作代码吗