Swift:嵌入在导航控制器中的视图之间的自定义segue
Posted
技术标签:
【中文标题】Swift:嵌入在导航控制器中的视图之间的自定义segue【英文标题】:Swift : custom segue between views embedded in a navigation controller 【发布时间】:2021-06-15 23:42:04 【问题描述】:我还处于学习 swift 和制作应用程序的起步阶段。所以我已经道歉了,因为我的问题可能非常明显,但我无法通过几天的每一项研究来解决它。我制作了一个小应用程序,在导航控制器中嵌入了很少的视图。当我使用默认转场(以模态方式显示或呈现)时,它运行良好。但我想通过制作和使用自定义转场来改进它。我创建了这个类并在 NavigationVC 中嵌入的视图之间使用它。然后它不起作用。当我在视图中按下按钮时,什么也没有发生。问题似乎不是来自自定义 segue,因为它在未嵌入 NVC 的视图之间使用时效果很好。因此,在 NVC 中使用自定义 segue 可能是一个更根本的问题。那不可能吗?或者,可能会针对导航堆栈中的视图修改代码。这里是自定义转场:
类 CustomSegueRotation : UIStoryboardSegue
override func perform()
let initialViewController = self.source.view
let destinationViewController = self.destination.view
let rotation = CAKeyframeAnimation (keyPath: "transform.rotation.y")
rotation.values = [0, CGFloat.pi]
rotation.autoreverses = false
initialViewController?.addSubview(destinationViewController!)
UIView.animate(withDuration: 0.3, delay: 0.05, options: .curveEaseInOut, animations:
initialViewController?.layer.add(rotation, forKey: nil)
, completion: nil)
非常感谢您的帮助。
【问题讨论】:
你需要谷歌“自定义过渡动画”。 【参考方案1】:您是否尝试过提供自定义 UINavigationControllerDelegate 来提供您希望用于过渡的动画?
https://developer.apple.com/documentation/uikit/uinavigationcontrollerdelegate/1621846-navigationcontroller
您可能希望实现协议 UIViewControllerAnimatedTransitioning https://developer.apple.com/documentation/uikit/uiviewcontrolleranimatedtransitioning 来描述您的动画。
然后从我上面提到的委托方法中返回这个实现。最后,将导航控制器上的委托设置为自定义导航控制器委托的实例。
【讨论】:
以上是关于Swift:嵌入在导航控制器中的视图之间的自定义segue的主要内容,如果未能解决你的问题,请参考以下文章
Swift:删除嵌入在导航控制器中的表格视图控制器页脚下方的空间