Моя цель проста, и я достиг этого ранее, поэтому я прибегаю к заданию своего вопроса здесь.UIView animateWithDuration игнорирует длительность
Я пытаюсь анимировать подзаголовок. Достаточно просто. Вид заканчивается именно там, где я хочу, чтобы он был после завершения анимации. Единственная проблема: независимо от того, что я делаю, продолжительность анимации полностью игнорируется. Это происходит мгновенно.
- (void)callToDismissView:(UIView *)view {
[self.view addSubview:view];
[self dismissViewControllerAnimated:NO completion:nil];
[UIView animateWithDuration:0.25 delay:0 options:UIViewAnimationOptionCurveEaseInOut animations:^(void){
CGRect frame = self.view.frame;
frame.origin.x = frame.size.width;
view.frame = frame;
} completion:^(BOOL finished){
[view removeFromSuperview];
}];
}
Теперь я пробовал разные кадры и длительности, чтобы увидеть, если посмотреть оживлялся на всех, и это всегда заканчивается там, где мне нужно, чтобы это было. Только мгновенно ...
EDIT:
Приведенный выше код вызывается делегатом в уволенного контроллере представления следующим образом:
- (void)dismissSelf {
if (self.delegate && [self.delegate respondsToSelector:@selector(callToDismissScan)]) {
[self.delegate callToDismissScan];
}
}
И что сам метод вызывается путем уведомления ,
Должен признаться, что во время перехода между двумя контроллерами происходят некоторые вещи, которые я не совсем понимаю. (И я очень хотел бы их понять ...)
По-прежнему воспроизводит ту же проблему. –
Закрытие анимации вызывает, но продолжительность всегда игнорируется. –
Проверить представление параметра nil или нет. Происхождение нового кадра было установлено как self.view.frame.size.width, вы не можете увидеть результаты анимации. – John