我正在尝试用呈现控制器的动画来推送控制器,并像关闭一样弹出控制器。
我正在使用此代码来推送控制器
let transition:CATransition = CATransition()
transition.duration = 0.4
transition.timingFunction = CAMediaTimingFunction(name: CAMediaTimingFunctionName.linear)
transition.type = CATransitionType.moveIn
transition.subtype = CATransitionSubtype.fromTop
AppDelegate.shared.window?.rootViewController!.view.layer.add(transition, forKey: kCATransition)
self.push(articleDetailScene, animated: false)
并使用此代码进行弹出。
let transition:CATransition = CATransition()
transition.duration = 0.0
transition.timingFunction = CAMediaTimingFunction(name: CAMediaTimingFunctionName.easeOut)
transition.type = CATransitionType.reveal
transition.subtype = CATransitionSubtype.fromBottom
self.navigationController?.view.layer.add(transition, forKey: kCATransition)
self.pop(animated: false)
摆好控制器后,黑屏出现在屏幕底部。我使用了answers,但是为该空间创建了一个白色屏幕,并且没有在该空间显示我的单元格。 Black screen when I don't use window background color to white和When I set window background color to white。
答案 0 :(得分:0)
您可以尝试此示例代码。
我要添加过渡到self.view的窗口而不是AppDelegate的窗口
我有基本视图控制器,并且那里有以下方法
func addTransitionForPush () {
let transition = CATransition()
transition.duration = 0.55
transition.type = CATransitionType.push
transition.subtype = CATransitionSubtype.fromBottom
transition.fillMode = CAMediaTimingFillMode.forwards
view.window?.layer.add(transition, forKey: kCATransition)
}
func addTransitionForPop () {
let transition = CATransition()
transition.duration = 0.55
transition.type = CATransitionType.push
transition.subtype = CATransitionSubtype.fromTop
transition.fillMode = CAMediaTimingFillMode.backwards
view.window?.layer.add(transition, forKey: kCATransition)
}
我如何在视图控制器中使用它
用于推送VC
@objc private func btnFilterTapped() {
self.addTransitionForPush()
let vc = self.storyboard........
self.navigationController?.pushViewController(vc, animated: false)
}
用于弹出
self.addTransitionForPop()
self.navigationController?.popViewController(animated: false)
如果您仍然遇到黑屏问题,请告诉我。