我正在尝试从带有过渡的左侧呈现一个新的 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 应从左向右移动。 请参阅视频和屏幕截图了解更多详情。
最佳答案
这是我一直用于从左到右过渡的东西,这是你要找的东西吗?
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/