ios - 快速自定义右转

标签 ios swift xcode uiviewcontroller segue

我试图从两个 View Controller 中获得正确的转场,问题是当它进行转换时,第一个 View Controller 进行转场,但它似乎很快就会出现故障,几乎与自身重叠,然后放置新的 View Controller 就可以了。我看过网上的其他帖子,似乎没有人遇到这个问题。

class UIStoryboardSegueFromRight: UIStoryboardSegue
{
    override func perform() {
        let src = self.source as UIViewController
        let dst = self.destination as UIViewController
        let transition: CATransition = CATransition()
        let timeFunc: CAMediaTimingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseInEaseOut)
        transition.duration = 0.2
        transition.timingFunction = timeFunc
        transition.type = kCATransitionPush
        transition.subtype = kCATransitionFromRight

        src.view.window?.layer.add(transition, forKey: nil)
        src.present(dst, animated: false, completion: nil)
    }
}

我已将路线包含在下图中。源使用 UINavController,其根 Controller 是 TabViewController。然后将该 TabViewController 附加到 UIViewController,该 Controller 是使用图片右侧显示的自定义转换进行 segue 调用的 Controller 。

All_Feed ViewController which is the source

目标只是下面链接中显示的 UIViewController。

Post Page ViewController which is the destination

最佳答案

我不太熟悉这种在 View Controller 之间转换的方法。您是否尝试过使用UIViewControllerAnimatedTransitioninghttps://developer.apple.com/documentation/uikit/uiviewcontrolleranimatedtransitioning

这还可以让您以比在转场中进行操作更可重用的方式抽象逻辑。

由于您希望源呈现目标,因此您可以将目标 VC 设为转换委托(delegate),以便连接 UIViewControllerAnimatedTransitioning 逻辑

由于您尚未共享任何视觉效果,因此我不会尝试翻译您想要完成的动画,但也许本教程也可以帮助您了解如何以这种方式实现转换:https://www.objc.io/issues/5-ios7/view-controller-transitions/

关于ios - 快速自定义右转,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51897377/

相关文章:

ios - 如何在 scenekit 中创建 3D 网格

ios - 音频播放进度作为 Swift 中的 UISlider

iPhone : Textfields and NSNumberFormatter

xcode - 使用 Mac Catalyst 上传新应用程序版本时出错

ios - 如何覆盖 setObject : forKey: method (in Foundation Framework)

ios - 如何调整 View 层次结构中的 UIRefreshControl 位置?

ios - 绘制两个 CAShapeLayer 的交集

ios - 使用 AVAudioEngine 循环音频

swift - 如何使用日期(从日期选择器中选择)来允许我转到特定的 View Controller ?

ios - 多操作系统程序兼容性