【发布时间】:2013-01-06 23:33:03
【问题描述】:
我有一个使用 CoreGraphics 和 drawRect 绘制齿轮的例程。我使用一个按钮来推进各个阶段的齿轮:
-(IBAction)advanceButtonPressed:(id)sender{
stage=stage+1;
if (stage==4) stage=0;
[self setNeedsDisplay];
}
绘制齿轮的例程在drawRect中,根据stage的vale将轮齿绘制到新的位置,传给drawRect。分四步,每按一次按钮,齿轮就会转到新的位置(绕圆一圈)。
我更改了 buttonPressed 例程,让它循环执行四个阶段,所以我只需要按一次按钮,但它不起作用:
-(IBAction)buttonPressed:(id)sender{
for (stage=0;stage<4;stage++){
NSLog(@"%i",stage);
[self setNeedsDisplay];
}
}
我的 NSLog 显示该阶段经历了它的四个值,就像在前面的例程中一样。但是 setNeedsDisplay 只执行一次,(正如 drawRect 中的 NSLog 跟踪所证实的那样),因此齿轮显示在其最终位置,而不是中间阶段。看起来 setNeedsDisplay 仅在按钮例程完成时执行,尽管它位于循环内。
有没有办法强制执行?
【问题讨论】:
标签: ios cocoa-touch uikit setneedsdisplay