禁用转场动画
Posted
技术标签:
【中文标题】禁用转场动画【英文标题】:Disabling segue animation 【发布时间】:2016-01-13 20:04:50 【问题描述】:我想在我的故事板中显示(例如推送)segues,以连接我的视图控制器和我的导航控制器。然后视图控制器上的导航栏将正确显示。 例如:使用 show detail 或 present modaly,导航栏会消失
但我不想要转场动画。 Xcode 给出的警告如下:“在 ios 9.0 之前不可用”
我想要 iOS 7.0 或 8.0 的部署目标
我该如何解决这个问题?
提前致谢。
【问题讨论】:
看到这个链接可能对你有帮助***.com/questions/32890470/… 【参考方案1】:您可以在执行 segue 之前和再次启用之后禁用动画。
UIView.setAnimationsEnabled(false)
self.performSegueWithIdentifier("next", sender: nil)
UIView.setAnimationsEnabled(true)
这将执行没有动画的转场。
【讨论】:
是的,我会的,但是有一个问题:你说'在启用它之后':你的意思是你把 UIView.setAnimationsEnabled(true) 直接放在 performegue 之后,例如 IBAction? 如果您不重新启用它,您的应用中将无法运行任何动画。 是的,我明白了。但它看起来很奇怪(对于我作为一个相对的新手)你执行一个 segue 并且这个UIView.setAnimationsEnabled(true)
之后仍然会被调用(如果你明白我的意思)。
我不知道它在后台是如何工作的(苹果的东西), performSegueWithIdentifier 我认为会调用 UIView.animateWithDuration 方法,如果你在调用它之前禁用动画,那么它不会动画。然后它将转到第 3 行,您可以在其中再次为其他动画启用动画。
这对我不起作用。我只需要使用“false”语句,并且在 viewDidDisappear 中我必须将动画设置回“true”。【参考方案2】:
点击 Main.Storyboard 中的 segue 箭头,然后:
查看Animates
【讨论】:
我知道,但这会发出警告:“禁用 segue 动画在 iOS 9.0 之前不可用” @codeDude 是的,这是不推荐使用的方法。这很正常;) O.o 它对我有用,因为我的部署目标是 iOS 9.0,所以根本没有警告。但是,它被弃用了吗?我希望收到有关它的警告。 我不知道你为什么收到这么多反对票,但这对我有用!【参考方案3】:如果您想在代码中切换动画状态,您可以在情节提要中复制您的 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)
【讨论】:
这是天才。【参考方案4】:我使用此线程中的 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 中,在自定义 Segue 的 Attributes Inspector 中,我选中了“Animates”框(是)。现在警告消失了,这就是我回答自己问题的原因。
我还不确定这是否是一个持久的解决方案。
【讨论】:
以上是关于禁用转场动画的主要内容,如果未能解决你的问题,请参考以下文章