![]() |
1
3
我的答案是:我基本上做了一些类似于uiTableView如何处理单元格的事情:我有一组不可变的graphview对象,这些对象存储了未使用的图。当滚动视图的某个部分可见时,我从该集合中获取一个图表视图(如果集合为空,则创建一个新视图)。它已经有了一个Scrollx属性来确定应该绘制它的哪个部分。我将scrollx属性设置为正确的值,而不是使用屏幕宽度,而是赋予它任意宽度进行绘制。当它退出滚动视图时,它将从uiscroll视图中删除并添加到集合中。 我想知道,当它们消失在视野之外时,我是否真的需要将它们移除?只有当我收到内存不足警告时,才尝试将它们留在屏幕上,并删除不在屏幕上的那些内容是明智的?当需要重新绘制一段未更改的图形时,这可能会消除暂停。 我在这里保存的优雅之处是我的graphview已经设置为只绘制图表的一部分。那时我所需要做的就是做不止一个。 |
![]() |
2
2
我认为这是iPhone图形硬件的一个限制。通过实验,我发现iPhone将拒绝绘制高度或宽度超过2000像素的帧。它可能与硬件中帧缓冲区的有限大小有关。 |
![]() |
3
1
观看名为“会话104-高级滚动查看技术”的2011年WWDC会话视频。 |
![]() |
4
0
谢谢,这很有帮助。一个问题——uiscrollview的contentSize使用了什么?只要不创建缓冲区来填充内容视图中的整个空间,uiscrollview是否允许大的内容大小(超过2000像素)?或者,每次绘制时(使用scrollx而不是contentoffset来存储位置),是否保持uiscrollview的大小不变(例如,2个屏幕宽度)并保持uiscrollview contentoffset属性? 我想我回答了我自己的问题(后者似乎是更好的选择),呵呵,但我会继续发表这篇文章,以防其他人需要澄清。 |
![]() |
user2606782 · 限制子视图在superview边界内的移动 7 年前 |