【发布时间】:2012-03-28 17:28:02
【问题描述】:
好的。我已经看到了很多与我在这里尝试做的类似的主题,但没有什么完全匹配的。也许我的方法是离谱的。这是交易。
我正在 drawRect: 中为我的 UIView 子类绘制图表。然后我使用 UIPanGestureRecognizer 将图表的偏移量(内部,不在视图层次结构中)转换为右/左。这很好用,但我的问题是识别器的动作以相对较低的频率触发。具体来说,生成的平移比滚动视图或表格视图中的平移要不稳定得多。特别是当我图表中的点数增加时。现在,我想做的实际上并不是从平移手势的动作中触发绘图,而是让计时器以每秒 30 次的速度触发,插入从平移触发到当前时刻的偏移量。然而,这变得越来越复杂。
有人有建议吗?我真的应该用 UIScrollView 来做这件事吗?我不想这样做的原因是数据可能会在任一方向上延伸很远,我不想一次绘制(或至少存储)整个路径,而只需执行当前的部分显示。我应该使用 CAShapeLayer 吗?在我花一天时间研究这些可能性之前,我想要一些输入...
非常欢迎任何意见/经验。
【问题讨论】:
-
为什么在平移时会调用
drawRect?你不是在移动视图吗? -
不,pan修改了我的“dataWindow”,这反映在drawRect中。视图本身不会移动或缩放。
-
啊,所以每次滚动增量都会重新绘制?那会让事情慢下来。我见过的一个技巧是将数据渲染成图像,并且仅在新数据到达时才从数据中重绘,否则只需合成图像。或者将您的数据视图放入滚动视图中并且根本不重绘。找到解决方案后发布。
-
是的,我正在考虑将其嵌入到滚动视图中。问题是数据可能在任一方向上无限延伸。随着我的进展,实现变得越来越复杂......
标签: ios core-graphics uigesturerecognizer smooth pan