两个视图之间的 Swift CATransition - 滑过效果上一个屏幕变白
Posted
技术标签:
【中文标题】两个视图之间的 Swift CATransition - 滑过效果上一个屏幕变白【英文标题】:Swift CATransition Between Two Views - Slide over effect previous screen turns white 【发布时间】:2015-07-16 19:30:13 【问题描述】:我正在尝试使用 CATransition 在两个全屏视图(相同的视图控制器)之间快速制作动画。希望复制(或接近)导航视图控制器推送转换。遇到 view2(要呈现的新视图)正确滑过,但 view1(下面的视图)消失的问题。基本上,正在动画的视图在白色屏幕上滑动,但我希望它在前一个屏幕上滑动。
var pushAnimationEffect = CATransition()
override func viewDidLoad()
super.viewDidLoad()
pageToUIView[i] = UIView()
view1.frame = CGRect(x: 0, y: 0, width: screenSize.width, height: screenSize.height)
view1.center = CGPointMake(screenSize.width/2, screenSize.height/2)
view2.frame = CGRect(x: 0, y: 0, width: screenSize.width, height: screenSize.height)
view2.center = CGPointMake(screenSize.width/2, screenSize.height/2)
view1.layer.addAnimation(pushAnimationEffect, forKey: nil)
view2.layer.addAnimation(pushAnimationEffect, forKey: nil)
self.view.addSubview(view1)
pushAnimationEffect.delegate = self
pushAnimationEffect.duration = 0.4
pushAnimationEffect.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseInEaseOut)
func nextPage()
pushAnimationEffect.type = kCATransitionMoveIn
pushAnimationEffect.subtype = kCATransitionFromRight
self.view.addSubview(view2)
view1.removeFromSuperview()
func prevPage()
pushAnimationEffect.type = kCATransitionMoveIn
pushAnimationEffect.subtype = kCATransitionFromLeft
self.view.addSubview(view1)
view2.removeFromSuperview()
稍微简化了代码,使其更易于阅读。
有没有更好的方法来做到这一点?代码有问题吗?
【问题讨论】:
【参考方案1】:您需要在动画完成后移除视图。使用 animationDidStop:finished: 委托方法。
【讨论】:
以上是关于两个视图之间的 Swift CATransition - 滑过效果上一个屏幕变白的主要内容,如果未能解决你的问题,请参考以下文章
创建一个 segue 并通过 Swift 在两个视图控制器之间附加它?