對於自定義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