gpt4 book ai didi

ios - 自定义动画过渡 - 查看/查看

转载 作者:行者123 更新时间:2023-11-28 11:21:01 25 4
gpt4 key购买 nike

我有一个用 Swift 编写的自定义转换,当呈现的 View 从侧面进入时,被关闭的 View 消失。

现在我想要同样的效果,但我希望呈现的 View 从顶部进入,而被取消的 View 从底部出来。

我的代码是这样的:

func animateTransition(transitionContext: UIViewControllerContextTransitioning){

let container = transitionContext.containerView()
let fromView = transitionContext.viewForKey(UITransitionContextFromViewKey)
let toView = transitionContext.viewForKey(UITransitionContextToViewKey)

let offScreenRight = CGAffineTransformMakeTranslation(container.frame.width, 0)
let offScreenLeft = CGAffineTransformMakeTranslation(-container.frame.width, 0)


if self.presenting == true{
toView?.transform = offScreenLeft
}else{
toView?.transform = offScreenRight
}

container.addSubview(toView!)
container.addSubview(fromView!)

let duration = self.transitionDuration(transitionContext)

UIView.animateWithDuration(duration, delay: 0.0, usingSpringWithDamping: 1.0, initialSpringVelocity: 0.8, options: nil, animations: {

if self.presenting == true{
fromView?.transform = offScreenRight
}else{
fromView?.transform = offScreenLeft
}
toView?.transform = CGAffineTransformIdentity

}, completion: { finished in

// tell our transitionContext object that we've finished animating
transitionContext.completeTransition(true)

})
}

我认为这很容易,因为我的逻辑告诉我们这样做的方法是在 toView 和 fromView 中从“宽度”更改为“高度”,但这不起作用,只会产生与之前,但它似乎跳过了一个空(黑色) View 。

如有任何关于如何达到预期效果的建议,我们将不胜感激。

错误代码:

func animateTransition(transitionContext: UIViewControllerContextTransitioning){

let container = transitionContext.containerView()
let fromView = transitionContext.viewForKey(UITransitionContextFromViewKey)
let toView = transitionContext.viewForKey(UITransitionContextToViewKey)

let offScreenUp = CGAffineTransformMakeTranslation(container.frame.height, 0)
let offScreenDown = CGAffineTransformMakeTranslation(-container.frame.height, 0)


if self.presenting == true{
toView?.transform = offScreenDown
}else{
toView?.transform = offScreenUp
}

container.addSubview(toView!)
container.addSubview(fromView!)

let duration = self.transitionDuration(transitionContext)

UIView.animateWithDuration(duration, delay: 0.0, usingSpringWithDamping: 1.0, initialSpringVelocity: 0.8, options: nil, animations: {

if self.presenting == true{
fromView?.transform = offScreenUp
}else{
fromView?.transform = offScreenDown
}
toView?.transform = CGAffineTransformIdentity

}, completion: { finished in

// tell our transitionContext object that we've finished animating
transitionContext.completeTransition(true)

})
}

最佳答案

您仍在尝试在 X 坐标中进行平移。尝试在 Y 坐标中进行平移。

let offScreenUp = CGAffineTransformMakeTranslation(0,container.frame.height)
let offScreenDown = CGAffineTransformMakeTranslation(0,-container.frame.height)

关于ios - 自定义动画过渡 - 查看/查看,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28128236/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com