Прежде чем дискредитировать этот вопрос, как просил раньше, пожалуйста, посмотрите на детали:Objective-C-animateWithDuration Завершение блок называется ранние
У меня есть простая анимация сужая кадр вида от его нормального размера к нулевой кадр в середине надзора. В моем блоке завершения я удаляю супервизор из своего супервизора и удаляю контроллер представления из родительского контроллера представления. Блок завершения вызывается немедленно. Кроме того, параметр BOOL
finished
для блока завершения равен YES
. Поэтому, когда я проверяю, завершена ли анимация, он говорит, что это даже когда это не так, и представление преждевременно удалено. Вот мой код:
- (void)closeWindow {
[UIView animateWithDuration:0.5
animations:^{
contentView.frame = [self getSchoolSetUpStartingFrame];
} completion:^(BOOL finished){
if(finished) {
[self.view removeFromSuperview];
[self removeFromParentViewController];
}
}];
}
- (CGRect)getSchoolSetUpStartingFrame {
CGRect startingFrame;
CGRect myFrame = self.view.frame;
float xPos = (myFrame.origin.x + (myFrame.size.width/2));
float yPos = (myFrame.origin.y + (myFrame.size.height/2));
startingFrame = CGRectMake(xPos, yPos, 0, 0);
return startingFrame;
}
Есть ли что-нибудь еще, что может быть связано с этой проблемой, что я до сих пор не считается? Я ценю всю помощь.
Вы должны объяснить ваши настройки контроллера. Является ли этот код в контроллере дочернего представления? Что такое contentView? – rdelmar
Вы используете авто-макет? – sha