如何创建iPad文档预览界面,如iWorks for iPad中的界面

Wri*_*sCS 7 user-interface ipad ios document-preview document-carousel

愿意为一个有效的例子奖励+500赏金.

我知道只有2个源代码示例可以在iPad上完成文档预览界面,就像在Number,Pages等中找到的那样.

infoNgenOmniGroup框架

还有其他例子吗?infoNgen这是一个很好的简单例子,然而,代码非常草率,写得非常糟糕,非常无组织.

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

替代文字

更新

我能够分解infoNgen的项目,并使用HTML预览创建一个准系统文档查看器,这似乎与更新文档中的信息并保持与预览同步非常有效.现在要解决的问题是,当应用程序退出并重新启动时,文档会保存.+500赏金仍然可用于一个工作示例,但是,除非发布了工作示例,否则我不会打开赏金.

Mos*_*she 13

"包装器视图"是将显示整个预览轮播的主视图控制器.

"carousel"本身就是一个UIScrollView.只需创建滚动视图并将pagingEnabled属性设置为YES.通过设置框架将其放置到适当的尺寸,然后将其添加到包装器视图控制器.您还需要contentSize将轮播视图的属性设置为足够大.通过将文档数量加上另外两个文档的宽度乘以轮播的宽度来计算.如果您希望两侧的文档显示一点,则将文档数乘以滚动视图的宽度减去几个像素.

编辑

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

结束编辑

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

您提供的文档预览可以是您喜欢的任何对象,如您所述,UIWebView可用于呈现HTML.无论你想用什么来代表你的缩略图,诀窍都是将它们解决.

我假设您有一个对象数组,尽管您可能正在使用Core Data来存储您的信息.要显示文档预览,请将它们添加到滚动视图,但是沿"X"坐标的正确位置.要计算该值,请将当前文档的索引乘以滚动视图的宽度.使用setFrame文档预览的方法应用此值.您还需要在当前和之后渲染预览,因此您可以获得平滑的动画.

要处理渲染和滚动,您需要将包装器放入UIScrollViewDelegate.每次滚动动画结束时,委托应告诉UIScrollView删除并重新呈现滚动视图.

要处理"轮播效果"(第一个和最后一个文档之间发生的循环),UIScrollViewDelegate应检查contentOffset属性并确定我们是否在最后一个对象.如果显示最后一个对象,则向右渲染第一个对象,就像其他任何对象一样.如果右侧对象随后滚动到,则使用[scrollView scrollToRect: CGRectMake(0,0,scrollView.rect.size.width,scrollView.rect.sizeheight) animated:NO];代码无缝跳转到开头.(对第一个预览执行相同操作.渲染左边的第一个和最后一个,必要时以相同的方式处理它).

我希望这个答案有所帮助.我会尽可能发布代码.

祝好运!

编辑2:

现在我考虑一下,整个分页控件可以打包到UIScrollView子类或类别中.我打算尝试这个.

  • 我同意你所建议的大部分内容(因此+1),但没有必要为所有文件包含空间; 事实上,这样做是超级记忆效率低下的.相反,您只需要滚动视图中的3个视图,因为只有3个视图可见.当一个人从另一侧滑下时,它会重新用作新的滑入.来自今年夏天WWDC的会议104,**使用滚动视图设计应用程序**,显示了如何做到这一点:http://developer.apple.com/videos/wwdc/2010 /(您必须注册为Apple开发人员才能下载视频,但未支付的帐户很好). (4认同)