禁用 segue 动画
Disabling segue animation
我想在故事板中显示(例如推送)转场,以连接我的视图控制器和导航控制器。然后视图控制器上的导航栏将正确显示。
例如:使用 show detail 或 present modaly,导航栏会消失
但我不想要 segue 动画。
Xcode 发出如下警告:"Disabling segue animation is not available prior to iOS 9.0"
我想要 iOS 7.0 或 8.0
的部署目标
我该如何解决这个问题?
提前致谢。
您可以在执行 segue 之前禁用动画,然后再次启用它。
UIView.setAnimationsEnabled(false)
self.performSegueWithIdentifier("next", sender: nil)
UIView.setAnimationsEnabled(true)
这将在没有动画的情况下执行转场。
我使用此线程中的 Swift 答案进行了自定义转场:
Push segue in xcode with no animation
所以:
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 的属性检查器中,我选中了 'Animates' 框(是)。现在警告消失了,所以这就是我回答自己问题的原因。
我还不确定这是否是一个持久的解决方案。
点击 Main.Storyboard 中的 segue 箭头,然后:
查看 Animates
如果你想在代码中切换动画状态,你可以在故事板中复制你的segue,使用不同的标识符,相同的起点和终点。然后制作一个主题动画,另一个不动画。然后,使用所需的标识符执行 performSegue。
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)
}
}
我想在故事板中显示(例如推送)转场,以连接我的视图控制器和导航控制器。然后视图控制器上的导航栏将正确显示。 例如:使用 show detail 或 present modaly,导航栏会消失
但我不想要 segue 动画。 Xcode 发出如下警告:"Disabling segue animation is not available prior to iOS 9.0"
我想要 iOS 7.0 或 8.0
的部署目标我该如何解决这个问题?
提前致谢。
您可以在执行 segue 之前禁用动画,然后再次启用它。
UIView.setAnimationsEnabled(false)
self.performSegueWithIdentifier("next", sender: nil)
UIView.setAnimationsEnabled(true)
这将在没有动画的情况下执行转场。
我使用此线程中的 Swift 答案进行了自定义转场:
Push segue in xcode with no animation
所以:
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 的属性检查器中,我选中了 'Animates' 框(是)。现在警告消失了,所以这就是我回答自己问题的原因。
我还不确定这是否是一个持久的解决方案。
点击 Main.Storyboard 中的 segue 箭头,然后:
查看 Animates
如果你想在代码中切换动画状态,你可以在故事板中复制你的segue,使用不同的标识符,相同的起点和终点。然后制作一个主题动画,另一个不动画。然后,使用所需的标识符执行 performSegue。
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)
}
}