Отключение анимации segue
Я хочу показать (например, push) segues в своем раскадровке, подключить мои контроллеры view и мой навигационный контроллер. Затем навигационные панели на контроллерах view будут отображаться правильно. Например: с подробной детализацией или текущей модалией панель навигации исчезнет
Но я не хочу анимации segue. Xcode дает предупреждение: "Отключение анимации segue недоступно до iOS 9.0"
И я хочу, чтобы цель развертывания iOS 7.0 или 8.0
Как я могу это решить?
Заранее спасибо.
Ответы
Ответ 1
Вы можете отключить анимацию перед выполнением segue и после ее повторного включения.
UIView.setAnimationsEnabled(false)
self.performSegueWithIdentifier("next", sender: nil)
UIView.setAnimationsEnabled(true)
Это позволит выполнить сеанс без анимации.
Ответ 2
Я сделал пользовательский segue, используя ответ Swift в этой теме:
Push segue в xcode без анимации
Так:
class ShowNoAnimationSegue: UIStoryboardSegue {
override func perform() {
let source = sourceViewController as UIViewController
if let navigation = source.navigationController {
navigation.pushViewController(destinationViewController as UIViewController, animated: false)
}
}
}
И в Xcode, в Инспекторе атрибутов пользовательских Segues, я проверил поле "Анимация" (YES). Теперь предупреждение исчезло, поэтому я отвечаю на свой вопрос.
Я еще не уверен, если это долговременное решение.
Ответ 3
Нажмите стрелку segue в Main.Storyboard, а затем:
Animates
Ответ 4
Если вы хотите переключить состояние анимации в коде, вы можете продублировать свой переход в раскадровке, используя разные идентификаторы, а также один и тот же источник и пункт назначения. Тогда сделайте одну из тем оживляющей, а другую нет. Затем выполните выполнить переход с нужным идентификатором.
class MyNavigationController : UINavigationController {
var firstTransitionAnimated : Bool = true // or false, based on initialization
override func viewDidLoad() {
super.viewDidLoad()
var properSegue = firstTransitionAnimated ? "animated_segue" : "not_animated_segue"
self.performSegue(withIdentifier: properSegue, sender: self)
}
}