Microsoft Outlook 曾经拥有(也许现在仍然如此)Outlook 中发生的所有事件的滚动时间线 View 。我想在我的应用程序中重新创建类似的东西。
我研究了 UIScrollView 的文档,并且知道如何让它按我想要的方式工作。当内容 View 可能很大时,我的问题更适合在 UIScrollView 中呈现数百个项目的最有效方式。
我可以:
或
我想知道的是:
谢谢!
您肯定知道的唯一方法是进行一些实验。我意识到这不是一个过于有用的答案,但我至少可以给你一些提示:
众所周知,使用 UIScrollView
有效地显示一屏以上的内容非常困难。在某些情况下,我已经为此苦苦挣扎了好几个星期。这在旧硬件(iPhone 3G/2nd gen iPod 或更早版本)上要糟糕得多,但如果你弄错了,你仍然可以轻松地让现代 iOS 设备爬行。您通常会遇到两个性能问题:
UIView
(包括 UILabel 等)会严重影响性能。如果每个数据点都是一个 View ,并且您可以缩小以查看所有数据点,您就会遇到这种情况。您可能会发现这与缩放非常不匹配:您不知道一屏到底有多少!
CALayer
上将 shouldRasterize
属性设置为 true 来强制您的图 block 光栅化。这实际上应该将图 block 的所有 subview 预渲染到纹理中,因此在渲染屏幕时,它将使用该预渲染图像,而不是遍历所有 subview 并单独渲染它们。一旦用户再次充分放大,请确保再次禁用它。还要尽量避免一次为所有图 block 设置它,否则它会卡顿,例如,您可以为每个图 block 设置单独的随机缩放级别阈值。如果您最终遇到shouldRasterize
问题,您可能需要直接在CALayer
级别工作。如果这些都没有帮助,大锤方法是使用 CATiledLayer
就像 MKMapView
和其他人一样。这需要您自己完成所有渲染和触摸事件处理,并且通常还会导致您在 map 和 Safari 应用程序中滚动时出现(有点难看的)淡入。
一些额外的提示:
UIImage
。如果每个 View 略有不同,请在 drawRect: 中按需生成图像:或者使用过滤器而不是预先将它们绘制为 CGImage
,或者从文件中加载它们。我希望这可以帮助您入门。祝你好运!
关于objective-c - 具有数百个数据点的 UIScrollView 最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8012255/
欢迎光临 OStack程序员社区-中国程序员成长平台 (https://ostack.cn/) | Powered by Discuz! X3.4 |