gpt4 book ai didi

ios - UIStoryboardSegue 动画子类中的属性

转载 作者:可可西里 更新时间:2023-11-01 01:08:10 24 4
gpt4 key购买 nike

我有一个 UIStoryboardSegue 子类,用于将当前 View Controller 替换为下一个 View Controller 。

因为我们在界面编辑器中有一个 Animates 属性,我想在子类中访问这个属性。

enter image description here

我的代码如下:

class ReplaceSegue: UIStoryboardSegue {

override func perform() {
var viewControllers = source.navigationController?.viewControllers.dropLast() ?? []
viewControllers.append(destination)
source.navigationController?.setViewControllers(viewControllers.map {$0}, animated: true) // I dont want this `true` to be hardcoded
}
}

最佳答案

根据 UIStoryBoardSegue 类中的注释

The segue runtime will call +[UIView setAnimationsAreEnabled:] prior to invoking this method, based on the value of the Animates checkbox in the Properties Inspector for the segue.

很明显,您可以使用

读取动画复选框的值
UIView.areAnimationsEnabled

所以在我的自定义转场

class MySegue: UIStoryboardSegue {
override func perform() {
debugPrint(UIView.areAnimationsEnabled)
}
}

如果动画复选框未选中,则打印false;如果选中,则打印true :)

所以在你的情况下

class ReplaceSegue: UIStoryboardSegue {
override func perform() {
var viewControllers = source.navigationController?.viewControllers.dropLast() ?? []
viewControllers.append(destination)
source.navigationController?.setViewControllers(viewControllers.map {$0}, animated: UIView.areAnimationsEnabled)
}
}

我希望发生的事情已经很清楚了,如果你仍然有疑问,这里是解释,iOS 检查动画复选框的值并使用它来设置是否启用动画,方法是调用 setAnimationsAreEnabled调用 perform() 方法之前界面中动画复选框的值。

因此,当控件到达 perform 内部时,您可以确信 iOS 已经读取了动画复选框的值并使用它来设置 setAnimationsAreEnabled 您现在要做的就是询问 areAnimationsEnabled 获取动画复选框的值。

所以这应该为您提供动画复选框的值(value):)

希望对您有所帮助:)

关于ios - UIStoryboardSegue 动画子类中的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52944314/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com