當我第一次從調度隊列調用下面的代碼時,完成塊沒有調用。UIView動畫完成塊未調用
- (void)viewDidLoad
{
[super viewDidLoad];
dispatch_queue_t initialize_queue;
initialize_queue = dispatch_queue_create("init", NULL);
dispatch_async(initialize_queue, ^{
_onInit = YES;
_isRunning = NO;
[self startProgress];
_onInit = NO;
});
}
- (void)startProgress
{
if (!_isRunning) {
_isRunning = YES;
NSLog(@"Starting");
[UIView animateWithDuration:0.5 animations:^{
self.progressStatusButton.hidden = NO;
self.activityLeftConstraint.constant = _activityLeftSpace;
self.activityWidthConstraint.constant = _activityWidth;
self.buttonWidthConstraint.constant = _progressStatusButtonWidth;
self.buttonLeftConstraint.constant = _progressStatusButtonLeftSpace;
self.activityView.alpha = 1.0;
}completion:^(BOOL finished){
NSLog(@"Start Animating");
[self.activityView startAnimating];
}];
}
}
當我刪除dispatch_aync
方法和在執行viewDidLoad
方法startProgress
,
完成塊調用。我應該如何糾正我的代碼?
我試圖改變dispatch_async
使用dispatch_async(dispatch_get_main_queue(),..)
,
然後完成塊調用,但我想異步執行startProgress
方法。
請讓我知道。
也許你可以把dispatch_async(initialize_queue ... – Wonil