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