Странная анимация при изменении приглашения NavigationItem

У меня эти ViewControllers добавлены в раскадровку:

enter image description here

Никто не связан с пользовательским классом, все из чистой раскадровки.

Видео на симулятор iPhone на iOS7

Это происходит только при использовании AutoLayout на iOS7.

Кто-нибудь еще видел это?

Загрузить образец проекта проблемы

Ответ 1

Я думаю, что эта проблема возникает, когда view получает автозапуск и устанавливает его размер на главный размер экрана. В iOS7 навигация анимации нажимается до размера вида, чтобы мы могли видеть, что анимация. Не беспокойтесь, это хорошо работает в ios8.0 и более поздних версиях. Для ios 7.0 вы можете указать размер представления в viewDidLoad, чтобы он мог настроить размер до его появления.

Ответ 2

Изменить 2:

Как упоминалось в комментариях, я не могу воспроизвести проблему с вашим образцовым проектом. Тем не менее, я заметил, что ваш проект настроен с целью развертывания, которая является iOS 8.3. Вот шаги, чтобы исправить это:

Шаг 1: выберите проект в Xcode Project Navigator. Шаг 2. Убедитесь, что вы выбрали свой проект в левом столбце редактора проекта, а не цели Шаг 3. Выберите вкладку "Настройки сборки". Шаг 4: Измените цель развертывания iOS для iOS 7.1 или iOS 7.0 в зависимости от того, с какой ОС вы тестируете. Шаг 5: Создайте и запустите.

Надеюсь, это поможет вам.

Edit:

Шаг1. Выберите UIViewController с меткой 14 и на третьей вкладке правой панели Xcode введите идентификатор раскадровки, например vc14.

Step2. Выберите UIViewController с меткой 12 и на той же вкладке, введите пользовательский класс, например ViewController.

Step3. Удалите действие триггера с вашей кнопки и замените его на @IBAction в ViewController

Step4. Добавьте этот код в свой @IBAction в ViewController:

@IBAction func push(sender: AnyObject) {
    var vc14 = self.storyboard?.instantiateViewControllerWithIdentifier("vc14") as! UIViewController
    vc14.view.layoutIfNeeded()
    self.navigationController?.pushViewController(vc14, animated: true)
}

Объяснение:

Странная анимация возникает, потому что макет никогда не возникал до того, как segue нажимает UIViewController в UINavigationController. iOS 7 не защищал надлежащим образом от такого сценария, вручную вызывая layoutIfNeeded перед входом в блок анимации, и когда макет наконец-то возникает, он запускает неявные анимации. В примере кода, который я вам предоставил, я вручную запускаю макет, прежде чем нажимать ViewController на стек, чтобы избежать этой проблемы.

Ответ 3

Я думаю, что вы нажмете ⌘T. поэтому запускается медленная анимация. Проверьте все используемые вами симуляторы.

Отладка- > Медленная анимация

Я прикрепляю изображение, проверяю его. See Image