0
有沒有人遇到同樣的問題,在調用動畫中的layoutIfNeeded時會凍結UI?在動畫中調用layoutIfNeeded塊會凍結iPhone 7上的UI
我有一個方法:
- (void)hide {
dispatch_block_t onMain = ^{
CGFloat height = -viewContent.frame.size.height;
[UIView animateKeyframesWithDuration:0.15f delay:0 options:0 animations:^{
[UIView addKeyframeWithRelativeStartTime:0.f relativeDuration:0.7f animations:^{
self.constraintViewContentBottom.constant = height/3;
[self layoutIfNeeded];
}];
[UIView addKeyframeWithRelativeStartTime:0.7f relativeDuration:0.3f animations:^{
self.constraintViewContentBottom.constant = height;
[self layoutIfNeeded];
}];
} completion:^(BOOL finished) {
[UIView animateWithDuration:0.2f animations:^{
self.viewBackground.alpha = 0.0f;
}
completion:^(BOOL finished) {
self.hidden = YES;
}];
}];
};
if([NSThread isMainThread]) {
onMain();
}
else {
dispatch_sync(dispatch_get_main_queue(), onMain);
}
}
其中的許多設備完美的作品,但在一個iPhone 7行:[self layoutIfNeeded];
凍結UI。
我無法調試該設備,但可以從中獲取一些日誌。
有誰知道我們如何解決這個問題?
感謝任何幫助。
那麼,基本上如果我們從[UIView animateWithDuration:0.2f動畫:^ {}]調用它;方法 - 你是對的。但我已經嘗試過不同的變體 - 之前,內心的結果是一樣的。 =( – Andrei
你必須使用'dispatch_sync'? –
不要使用dispatch_sync! –