ios - imageView的动画是从中心开始的

标签 ios swift animation cgaffinetransform

我有一个 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/

相关文章:

c++ - 如何使用 Box2d 获取一个或多个碰撞点?

javascript - 单击箭头按钮时如何更快地移动矩形?

java - 将动画 GIF 添加到 swing 标签

swift - 未显示 iOS 15 通信通知图片

css - 反向重用 CSS 动画(通过重置状态?)

ios - 如何计算核心数据中的连续天数?

iphone - 我的自定义类在 UIViewController 内部损坏,无法跟踪它,没有编译器错误

ios - 外部常量 - 在类型的对象上找不到属性

ios - swift 中单个对象的 NSNotification

ios - 对多个变量使用 arc4random