如何在iPhone中以360度编程方式旋转按钮?

iOS*_*per 2 iphone cocoa-touch objective-c

如何将按钮旋转360度持续30秒,之后按钮停止旋转.

Dav*_*ist 8

360度旋转动画只是使用Core Animation的几行代码.

CABasicAnimation *rotate = 
    [CABasicAnimation animationWithKeyPath:@"transform.rotation"];
rotate.byValue = @(M_PI*2); // Change to - angle for counter clockwise rotation
rotate.duration = 30.0; 

[yourButton.layer addAnimation:rotate 
                        forKey:@"myRotationAnimation"];
Run Code Online (Sandbox Code Playgroud)

通过使用该byValue属性,您可以对之前的任何旋转进行360度的相对旋转(与显式指定from和to值相比).这意味着上面的代码将按钮旋转360度,即使它已经旋转.显式指定结束变换的所有答案都假定按钮尚未旋转.

上面的例子尽可能地小到你所要求的("旋转360度,持续时间30秒").如果您想要更多控制,可以选择通过指定计时功能使动画开始和/或缓慢停止

rotate.timingFunction = 
    [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]; 
Run Code Online (Sandbox Code Playgroud)

如果您尚未添加QuarzCore.framework到项目中,则需要执行此操作.也#import <QuartzCore/QuartzCore.h>位于源文件的顶部.