0
有没有办法从drawRect:
退出而不刷新当前的UIView
? 例如:回滚drawRect:
- (void)drawRect:(CGRect)rect {
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetRGBStrokeColor(context, 1.0, 1.0, 1.0, 1.0);
CGContextSetLineWidth(context, 2);
CGContextMoveToPoint(context, 10.0, 30.0);
CGContextAddLineToPoint(context, 310.0, 30.0);
CGContextStrokePath(context);
//I would like to return from here and rollback all changes in drawRect:
}
谢谢!
不,你不能。如果你解释为什么你想这样做,也许有人可以提供一个替代解决方案。 – 2010-06-03 10:10:07
这是一个地图应用程序。当用户移动地图时,一个新的线程(让我们称之为thread1)开始重画屏幕。然后用户再次移动地图,现在thread2(最新的线程)必须重绘地图。但是,如果thread1没有完成绘图,屏幕会快速“塑造”thread1的图像。所以最好是回滚thread1的drawRect:方法并绘制thread2的图像。 – fic 2010-06-03 11:46:39
这听起来很奇怪。你不能重画屏幕超过50fps。为了让gui响应,drawrect所花费的时间应小于1/50秒。如果您的绘图花费的时间更长,这听起来像需要在后台线程中绘制纹理,并且准备好后,以直方式将其投影到屏幕上(这将花费少于1/50秒)。您的问题然后成为如何取消后台线程并开始一个新的。 – hooleyhoop 2010-06-03 12:11:25