连续旋转不居中

时间:2017-08-06 21:14:21

标签: ios swift autolayout

使用此代码:

    UIView.animate(withDuration: 0.5, delay: 0, options: [.repeat], animations: {
        self.star.transform = self.star.transform.rotated(by: CGFloat(M_PI_2))
    })

我的观点是这样做的: enter image description here

使用此代码:

extension UIView {
    func rotate360Degrees(duration: CFTimeInterval = 3) {
        let rotateAnimation = CABasicAnimation(keyPath: "transform.rotation")
        rotateAnimation.fromValue = 0.0
        rotateAnimation.toValue = CGFloat(M_PI * 2)
        rotateAnimation.isRemovedOnCompletion = false
        rotateAnimation.duration = duration
        rotateAnimation.repeatCount=Float.infinity
        self.layer.add(rotateAnimation, forKey: nil)
    }
}

我的观点是这样做的: enter image description here

两者都没有做我想做的事。正在旋转的视图是一个带有缩放比例的UIImageView。我希望图像完全保持在中间。我怎么能做到这一点?这些函数在viewDidAppear中执行。最后一个gif看起来更好,但请注意这颗恒星没有完全居中...... This is the image

1 个答案:

答案 0 :(得分:3)

问题

图像的中心不是明星的中心。

解决方案

有两种可能的解决方案

  • 编辑图像,使星形的中心位于图像的中心。
  • 将旋转图层的锚点设置为星形的中心(x:1004px,y:761px)。