imageView的动画从它的中心开始

时间:2017-03-30 12:50:20

标签: ios swift animation cgaffinetransform

我有一个UIImageView。我已经在动画块中改变了它的高度。 imageView具有自动布局约束。 imageView的初始高度设置为0,这样我就可以实现transitionFlipToBottom效果。当动画块运行时,它会转换高度,但它从中心开始,而不是从顶部开始。

以下是代码:

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

    })
}

1 个答案:

答案 0 :(得分:0)

所有变换都发生在图层的锚点上,默认值位于中心。

E.g。当你进行旋转变换时,它将围绕中心旋转。当你缩放时,它会相对于中心缩放。

请注意,锚点位于单位空间中,例如介于0和1之间。默认值为(0.5,0.5)或位于中心。

因此,在进行动画制作之前,请尝试将其设置到图像视图的顶部中心:

self.imgFitness!.layer.anchorPoint = CGPoint(x: 0.5, y: 0)