gpt4 book ai didi

cocoa-touch - 如何在 UIScrollView 中滚动不定大小的 UIView

转载 作者:行者123 更新时间:2023-12-03 00:47:09 24 4
gpt4 key购买 nike

我正在尝试绘制一个水平无限大且与屏幕高度相同的图表。我添加了一个 UIScrollView 以及其中的 UIView 子类,它实现了 -drawRect: 方法。在模拟器中,一切正常,但在设备上,达到一定大小后似乎无法绘制图形。

我已经缓存了几乎所有可以缓存的内容,并且基本上只在 -drawRect: 部分中调用 CGContextAddLineToPoint。我只绘制屏幕上可见的内容。我有一个 UIScrollView 委托(delegate),它监听 -scrollViewDidScroll:,然后告诉图形重新绘制自身 ([graphView setNeedsDisplay])。

我发现一种方法告诉我重写+layerClass方法并返回[CATiledLayer class]。这确实允许图形在设备上实际绘制,但功能很差。实际绘制速度非常慢,而且出现的淡入淡出也是不受欢迎的。

有什么建议吗?

最佳答案

好吧,这是我的答案:我基本上做了类似于 UITableView 如何处理单元格的事情:我有一个 GraphView 对象的 NSMutableSet,它存储未使用的图形。当 ScrollView 的一部分变得可见时,我从该集合中获取一个图形 View (或者如果该集合为空,则创建一个新 View )。它已经有一个scrollX属性来确定应该绘制它的哪一部分。我将scrollX属性设置为正确的值,并且不使用屏幕宽度,而是给它一个任意的绘制宽度。当它离开 ScrollView 时,它会从 UIScrollView 中删除并添加到集合中。

我想知道当它们离开 View 时我是否真的需要将它们删除?仅当我收到内存不足警告时,尝试将它们留在屏幕上并删除不在屏幕上的那些可能是谨慎的做法?每当需要重新绘制未更改的图表部分时,这可能会消除暂停。

我的可取之处是我的 GraphView 已经设置为仅绘制图表的一部分。我所需要做的就是制作多个这样的东西。

关于cocoa-touch - 如何在 UIScrollView 中滚动不定大小的 UIView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/387114/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com