sách gpt4 ai đã đi

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

In lại 作者:行者123 更新时间:2023-11-28 11:21:01 26 4
mua khóa gpt4 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
}khác{
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
}khác{
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
}khác{
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
}khác{
fromView?.transform = offScreenDown
}
toView?.transform = CGAffineTransformIdentity

}, completion: { finished in

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

})
}

1 Câu trả lời

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

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

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

26 4 0
Bài viết được đề xuất: javascript - div 循环隐藏和显示
Bài viết được đề xuất: javascript - 为什么 JavaScript 会有这样的行为?
Bài viết được đề xuất: javascript - 一旦在不同容器中达到最大长度,就聚焦下一个输入
Bài viết được đề xuất: css - 对 drupal7 页面的不良影响
行者123
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com