我有一个 UIImageView。我已经在动画 block 中改变了它的高度。 imageView 有自动布局约束。 imageView的初始高度设置为0,这样我就可以实现transitionFlipToBottom效果。当动画 block 运行时,它会改变高度,但它是从中心开始而不是从顶部开始。
这是代码:
func Test(){
self.imgFitness!.transform = CGAffineTransform(scaleX: 1, y: 0)
self.imgTime!.transform = CGAffineTransform(scaleX: 0, y: 1)
UIView.animate(withDuration: 0.6, animations: {
self.imgFitness!.transform = CGAffineTransform(scaleX: 1, y: 1)
}, completion: { (success) in
UIView.animate(withDuration: 1, animations: {
self.imgTime!.transform = CGAffineTransform(scaleX: 1, y: 1)}, completion: { (success) in
})
}
最佳答案
所有变换都围绕图层的 anchor 进行,默认值位于中心。
例如当你进行旋转变换时,它将绕中心旋转。当你缩放时,它会相对于中心缩放。
请注意, anchor 位于单位空间中,例如0 到 1 之间。默认值为 (0.5, 0.5) 或中心。
因此,在执行动画之前尝试将其设置为 ImageView 的顶部中心:
self.imgFitness!.layer.anchorPoint = CGPoint(x: 0.5, y: 0)
关于ios - imageView的动画是从中心开始的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43118392/