我正在尝试为父级outerView
的比例设置动画,但让子级innerView
保持其大小,以便父视图变换仅在动画过程中对其进行裁剪。由于某种原因,反向转换会将子视图缩放到更大的尺寸。
没有反向转换,父子转换相等。
@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()
}
答案 0 :(得分:1)
将yyyy-MM-dd HH:mm:ss.SSS
和innerView
的兄弟姐妹放在outerView
中,当然parentView
与innerView
重叠。
然后像已经进行的那样为outerView
的{{1}}设置动画。
最后,还要设置transform
的高度的动画。 (确保outerView
是parentView
。)
(以上假设parentView.clipsToBounds
的内容需要垂直压缩。当然,如果没有这样的内容,则不需要true
并可以设置动画的高度outerView
。)
顺便说一句,动画的最终结果确实有parentView
回到了原始高度。但是由于outerView
剪切,您在动画中看不到它。正是在动画期间,变换变得混乱了。