2014-02-11 3 views
0

Я создаю приложение, в котором есть главный вид, управляемый контроллером представления, и второе представление настроек, управляемых другим контроллером представления.Анимация завершается немедленно iOS

Я использую контроллер контейнера для целей UI/UX в приложении, где после касания кнопки представление для настроек переместилось с нижней части экрана на середину высоты. Верхняя половина экрана по-прежнему показывает предыдущий основной вид.

Все работает отлично, после нажатия кнопки или когда пользователь уклоняется от контроллера просмотра, который соскользнул, я сохраняю один вид (потому что он все еще виден), я держу контроллер вида в памяти, но я удаляю его от иерархии View Controller и переключиться на другую.

Проблема в том, что когда я нажимаю кнопку, чтобы отобразить контроллер просмотра настроек, все очень простые анимации на главном экране, такие как анимация свойства кадра UILabel, ведут себя неожиданно. Анимация завершена почти сразу.

Я прочитал ответ на StackOverflow, указав на то, что изменение свойства transform делает невозможным анимировать использование свойства frame и требует анимации с помощью свойства center.

Несмотря на то, что я не изменял явно свойство преобразования любых объектов (я не очень хорошо знаком с этим свойством), я попытался анимировать, используя свойство center, и он по-прежнему анимирован слишком быстро.

Вот пример анимации, который завершает сразу после настройки нажата кнопка, но отлично работает иначе:

  [UIView animateWithDuration:1.4 animations:^{ 

      self.alarmTimeLabel.center = CGPointMake(self.alarmTimeLabel.center.x, self.alarmTimeLabel.center.y + 200); 


     }]; 

Спасибо за любой вход

+0

как-то ... эта анимация находится в поле зренияDidLoad второго контроллера? Такое поведение ... также может произойти, если метка уже анимирована. – TonyMkenu

+0

Анимация происходит в первом контроллере представления, том, что для основного пользовательского интерфейса. Когда пользователь возвращается в основной интерфейс после посещения меню настроек, первый пользовательский интерфейс не оживляет должным образом. –

ответ

0

анимация в настоящее время работают, используя старый метод для достижения тот же результат.

 [UIView beginAnimations:@"test" context:nil]; 

     [UIView setAnimationDuration:2.0]; 

     self.alarmTimeLabel.center = centerAlarmTimeLabel; 
     self.amOrPm.center = centerAmOrPm; 



     [UIView commitAnimations]; 

Это исправило ошибку! Я не знаю, почему новый способ сделать простые анимации не работает даже при использовании свойства центра.

Смежные вопросы