Microsoft Outlook过去曾经 - 现在可能仍然 - 在Outlook中发生的所有活动的滚动时间线视图。我想在我的应用程序中重新创建类似的东西。
我已经研究过UIScrollView的文档,我知道如何让它按照我想要的方式工作。我的问题更倾向于在内容视图可能很大时以最有效的方式在UIScrollView中呈现数百个项目。
我可以:
或
我想知道的是:
谢谢!
答案 0 :(得分:4)
你肯定知道的唯一方法是尝试一下。我意识到这不是一个过于有用的答案,但我至少可以给你一些提示:
使用UIScrollView
s有效地显示多个屏幕的内容是非常困难的。在某些情况下,我已经挣扎了几个星期。在较旧的硬件(iPhone 3G /第二代iPod或更旧版本)上情况更糟,但如果你弄错了,你仍然可以轻松地将现代iOS设备带到爬行中。您通常会遇到两个性能问题:
UIView
(包括UILabel等),会严重损害性能。如果每个数据点都是一个视图,你就会遇到这种情况,你可以缩小以查看所有数据点。你可能会看到这与缩放有什么关系:你不确切知道一个屏幕是多少!
shouldRasterize
上将CALayer
属性设置为true来强制您的切片进行栅格化。这应该基本上将瓷砖的所有子视图预呈现为纹理,因此在渲染屏幕时,它将使用预渲染的图像,而不是遍历所有子视图并单独渲染它们。一旦用户再次放大,请务必再次禁用它。还要尽量避免一次为所有瓷砖设置它或者它会断断续续,所以例如你可以为每个瓷砖设置单独的随机缩放级别阈值。如果您最终遇到shouldRasterize
问题,则可能需要直接在CALayer
级别工作。如果这些都没有帮助,那么大锤方法就像CATiledLayer
一样使用MKMapView
而其他方法也是如此。这需要您自己完成所有渲染和触摸事件处理,并且通常还会导致在地图和Safari应用程序中滚动时获得的(有点难看)淡入。
一些额外的提示:
UIImage
s。如果每个视图略有不同,请在drawRect中按需生成图像:或使用过滤器,而不是将它们预先绘制为CGImage
,或者从文件中加载它们。我希望这有助于您入门。祝你好运!