我正在尝试制作 180 度旋转的动画UIImageView
在斯威夫特
UIView.animateWithDuration(1.0, animations: { () -> Void in
self.arrowImageView.transform = CGAffineTransformMakeRotation(CGFloat(180 * M_PI))
}) { (succeed) -> Void in
}
但根本不是动画。
我想使用 animateWithDuration 因为我想在某个时候使用CGAffineTransformMakeIdentity
Using UIView
动画作品。
UIView.beginAnimations(nil, context: nil)
UIView.setAnimationDuration(1)
UIView.setAnimationCurve(UIViewAnimationCurve.EaseIn)
let radians = CGFloat(180 * M_PI / 180)
arrowImageView.transform = CGAffineTransformMakeRotation(radians)
UIView.commitAnimations()
======= UIView 的扩展 =======
我从互联网上找到了这个答案,并进行了测试,工作得很好。希望这对任何人都有帮助,只需更改UIView根据您的需要,例如,UIView、UIButton、UIImageView等并通过myUIView.rotate()
函数,这里myUIView应该replace with 您的视图名称(IBOutlet -> 名称)具有正确的扩展视图类型。这是link http://ioscake.com/uiview-infinite-360-degree-rotation-animation.html我找到了这个答案。而且这个方法简单又有效!
=== SWIFT 3 / 4 ===
extension UIView{
func rotate() {
let rotation : CABasicAnimation = CABasicAnimation(keyPath: "transform.rotation.z")
rotation.toValue = NSNumber(double: M_PI * 2)
rotation.duration = 1
rotation.cumulative = true
rotation.repeatCount = FLT_MAX
self.layer.addAnimation(rotation, forKey: "rotationAnimation")
}
}
建议的改进。感谢您的所有建议。
=== SWIFT 5 ===
extension UIView{
func rotate() {
let rotation : CABasicAnimation = CABasicAnimation(keyPath: "transform.rotation.z")
rotation.toValue = NSNumber(value: Double.pi * 2)
rotation.duration = 1
rotation.isCumulative = true
rotation.repeatCount = Float.greatestFiniteMagnitude
self.layer.add(rotation, forKey: "rotationAnimation")
}
}
然后像下面这样调用该扩展:
self.your_UIViewOutletName_myUIView_here.rotate()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)