对于自定义UIView
子类,我在drawRect
中有一个复杂的Quartz例程。可能需要几秒钟才能绘制。我想要的是在绘图时显示UIActivityIndicator
。但是在绘图完成后,指标必须停止旋转(并隐藏)。在Quartz中绘图时显示UIActivityIndicator
我试图启动指标的动画,然后使用performSelector
作为简单调用setNeedsDisplay
的自定义方法 - 我的想法是performSelector
将等到下一个运行循环,对吧?在这种情况下,我的指标有时间在主线程上启动。这似乎正在工作,但只要我将代码添加到drawRect
的末尾以停止动画,指示器根本不会显示,就好像该动画在它有机会开始之前就结束一样。
有什么建议吗?
我称这样的图:
[self.spinner startAnimating];
[self performSelectorOnMainThread:@selector(redraw) withObject:nil waitUntilDone:YES];//tried both YES and NO here
-(void)redraw{
[self.customView setNeedsDisplay];
}
的drawRect:
简单地具有本底:
- (void)drawRect:(CGRect)rect{
//bunch of drawing
[self.nav stopSpinner]; // reference to a controller class
}
在self.nav
对象是这样的:
-(void)stopSpinner{
self.spinner.hidden=YES;
[self.spinner stopAnimating];
}
而spinner
对象最初创建这样的:
self.spinner=[[[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge]autorelease];
self.spinner.hidden=YES;
[self.viewController.view addSubview:self.spinner];
向我们展示了'的drawRect:'代码,试图阻止纺纱。 – 2012-08-09 06:42:57
这很长,我宁愿不要在这里发布;然而函数的'}'前面最后一行是'UIActivityIndicator'的消息,因为它会停止动画。 – johnbakers 2012-08-09 07:18:00
编辑你的问题并粘贴在该行。 – 2012-08-09 07:31:46