gpt4 book ai didi

swift - 仅用于 super View 的动画变换

转载 作者:可可西里 更新时间:2023-11-01 01:56:43 25 4
gpt4 key购买 nike

我正在尝试为父级 outerView 的比例设置动画,但让子级 innerView 保持它的大小,以便父级 View 变换在动画期间将其剪裁。出于某种原因,反向变换正在将 subview 缩放到更大的尺寸。

没有反向变换,父子变换相等。

    @IBAction func transformAction(_ sender: Any) {
let animation = UIViewPropertyAnimator(duration: 5, curve: .linear) {
self.outerView.transform = self.outerView.transform.scaledBy(x: 1, y: 0.1)
self.innerView.transform = self.outerView.transform.inverted()
}

animation.addCompletion { _ in
self.outerView.transform = CGAffineTransform.identity
self.innerView.transform = CGAffineTransform.identity
}

animation.startAnimation()
}

Layput of views

enter image description here

最佳答案

parentView 中创建 innerViewouterView 兄弟,当然 innerViewouterView 重叠

然后像您已经做的那样为 outerViewtransform 设置动画。

最后,还要为 parentView 的高度设置动画。 (确保 parentView.clipsToBoundstrue。)

(以上假设outerView有需要垂直压缩的内容,当然如果没有这些内容,就不需要parentView和可以只为 outerView 的高度设置动画。)

顺便说一句,动画的最终结果确实使 innerView 回到了原来的高度。但是由于 outerView 裁剪,您在动画中看不到这一点。正是在动画期间,变换才搞砸了。

关于swift - 仅用于 super View 的动画变换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52622500/

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