如何反映setNeedsDisplay
的UIView更改?绘图后反映UIView更改
在drawRect
通过setNeedsDisplay
- (void)drawRect:(CGRect)rect {
double i = 0;
for(...)
//i is incremented
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(i * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
drawStuff(element, context);
});
例如触发,每次抽奖将更新后的1S,2S,3S发生,...
DrawStuff
切换回主线程与
dispatch_async(dispatch_get_main_queue(), ^(void) { ...
更新UI时。我已经尝试了UIBezierPath
和核心图形并获得相同的结果。我也使用UIGraphicsPushContext
和UIGraphicsPopContext
来获取正确的上下文。
使用NSLog,我可以告诉drawStuff以1s为增量调用。但是,可见的UIView保持不变。我可以旋转设备屏幕,这将重新定位UIView并更改其大小。在旋转时,UIView将反映它当前绘制的内容,但是之后我需要再次旋转它以在几秒后看到更新的状态。
回到上面的问题,是否有电话告诉UIView在setNeedsDisplay
之后显示其当前图形?谢谢。