ios - 呈现具有从左到右过渡的透明背景的新 View Controller 时出现问题

标签 ios iphone swift xcode catransition

我正在尝试从带有过渡的左侧呈现一个新的 View Controller 。这是代码。

 @IBAction func presentNewVC(_ sender: Any) {

        let storyBoard = UIStoryboard(name: "Main", bundle: Bundle.main)
        let leftMenuController:NewViewController = storyBoard.instantiateViewController(withIdentifier: "NewViewController") as! NewViewController

        leftMenuController.modalPresentationStyle = UIModalPresentationStyle.overCurrentContext

        leftMenuController.providesPresentationContextTransitionStyle = true
        leftMenuController.definesPresentationContext = false

        let transition = CATransition()
        transition.duration = 1.0
        transition.type = kCATransitionMoveIn
        transition.subtype = kCATransitionFromLeft

        transition.fillMode = kCAFillModeRemoved

        view.window!.layer.add(transition, forKey: kCATransition)
        present(leftMenuController, animated: false, completion: nil)

    }

现在,在过渡时执行滑动动画时,背景中的现有 View 也似乎在滑动。

理想情况下,透明的新 View Controller 应该看起来是从左向右移动,但它也会在移动时显示现有 View 作为背景。

编辑:只是为了更清晰: 这不是我正在寻找的如何从左到右导航。过渡已实现并且工作正常。问题是不同的。由于我的左菜单 View 是透明的,因此在从左到右呈现它时,它还会在过渡时显示底层现有 View 作为它自己的背景。 请引用屏幕截图和视频。只是想在过渡时停止这个。仅呈现的左透明 View 应从左向右移动。 请参阅视频和屏幕截图了解更多详情。

Click here to watch video to understand the issue

动画时:(问题)enter image description here

最后:(如预期的那样)enter image description here

最佳答案

这是我一直用于从左到右过渡的东西,这是你要找的东西吗?

class SegueFromLeft: UIStoryboardSegue {
override func perform()
{
    let src = self.source
    let dst = self.destination

    src.view.superview?.insertSubview(dst.view, aboveSubview: src.view)
    dst.view.transform = CGAffineTransform(translationX: -src.view.frame.size.width, y: 0)

    UIView.animate(withDuration: 0.25,
                   delay: 0.0,
                   options: UIViewAnimationOptions.curveEaseInOut,
                   animations: {
                    dst.view.transform = CGAffineTransform(translationX: 0, y: 0)
    },
                   completion: { finished in
                    src.present(dst, animated: false, completion: nil)
    }
    )
}
}

关于ios - 呈现具有从左到右过渡的透明背景的新 View Controller 时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41737294/

相关文章:

ios - 使用 MKMapKit 显示用户位置( Objective-C )

ios - iPhone应用程序在模拟器上工作正常,但在实际设备上崩溃

ios - Apple 开发人员拒绝 - 在应用程序中使用订阅 - 业务 - 3.1.1

ios - 如何更改 iOS 7.1.1/iPhone 5s 上的导航栏按钮颜色

iphone - tableFooterView 中的 UIButton 不响应点击事件

ios - 从应用程序内部访问 App Store 上的应用程序的链接不起作用

ios - iOS位置问题-看不到任何数据

ios - 如何防止 Parse 保存 PFObject child 的?

java - 有没有办法通过Java使用Apple的OS X API?

ios - 又名 'NSString' 没有成员 - Swift