【发布时间】:2015-04-16 14:18:33
【问题描述】:
对于我正在创建的应用程序,我使用UIBezierPath 来存储路径。问题是这条路径的长度不断增加,并且在某一点上,应用程序滞后并变得生涩。因为路径的长度不断增加,我不断地每秒重绘视图 100 次(如果有更好的方法,请告诉我)。在某个时刻,应用程序变得非常生涩。我认为是因为路径太长了。
您可以在我的drawRect 方法中看到图形已被翻译。屏幕上的路径很少,所以有没有办法只描边可见的路径部分?这就是我认为我使用 CGContextClip 方法所做的事情,但它没有明显的改进。
- (void)drawRect:(CGRect)rect {
CGContextRef myContext = UIGraphicsGetCurrentContext();
CGContextTranslateCTM(myContext, 0, yTranslation);
[[UIColor whiteColor] setStroke];
[bPath addLineToPoint:currentPoint];
[bPath setLineWidth:lineWidth];
CGContextClip(myContext);
[bPath stroke];
}
谢谢。
【问题讨论】:
-
@Rob 是的,该行与用户的点击有关。我有一个定时方法,每 10 毫秒调用一次来刷新屏幕并根据用户的最后一次点击进行调整。但无论如何,路径永远不会是静态的。另外,我只是添加点,整个曲线没有改变。谢谢。
-
@Rob 应用程序的性质需要添加这些数据点。我确实将更新从 10 毫秒更改为 40 毫秒,并且有了显着的改进。但是,我的理想方案是缩短到屏幕上可见内容的路径。
标签: ios cocoa-touch graphics core-graphics uibezierpath