由于我必须在 UIview 中绘制很多点,我想在 UIView 上显示一个活动指示器视图。
我尝试过这样的事情,但它不起作用。
-(void) drawRect:(CGRect)rect
{
[self.activityIndicatorView startAnimating];
CGContextRef cr = UIGraphicsGetCurrentContext();
// Lots of CG functions (take a few seconds)
[self.activityIndicatorView startAnimating];
}
如何在绘图时显示纺车?
使用解决方案进行编辑(感谢@dasblinkenlight):
两个 UIImageView,一个用作占位符(UIActivityIndicatorView 运行的地方),另一个用于绘制 CG 内容,名为 Renderer。
如此处所述,Renderer 类编写了一个 UIImage。完成占位符后将drawrect调用放在另一个队列(背景)中可以使用要显示的图像。
那是代码:
dispatch_queue_t myQueue = dispatch_queue_create("MyQueue", 0);
dispatch_async(myQueue, ^{ [self.renderer drawRect:self.placeholder.bounds]; dispatch_async(dispatch_get_main_queue(), ^{ [self.placeholder setImage:[self.renderer renderedImage]]; }); });
我仍然不明白为什么我必须直接调用 drawRect 函数,而不是 setNeedDisplay。可能是因为它在后台运行?