CATransform3d是一个UIButton

Joe*_*moe 5 iphone animation core-animation catransform3d

我似乎无法使用简单的3D转换来处理按钮,文档似乎没有帮助.我从一个基于视图的应用程序模板开始.我添加了QuartzCore框架并将其导入ViewController标头.在界面构建器中,我拖出两个Round Rect Buttons并将它们分别连接到button1和button2,并将它们连接到buttonPressed:方法.

注释掉动画的快速运行将验证只有单击的按钮会更改其标签.

回到动画后,我在"sender.transform = t;"上获得了'setTransform:'参数1的错误不兼容类型 line(现在这是固定的行改为[sender.layer setTransform:t];)

如何让它旋转360度.我认为问题是开始和结束状态是相同的,所以它不知道旋转到任何地方.

这是.h,(由于本文中的格式化原因,我省略了导入)

@interface animation2ViewController : UIViewController {

    IBOutlet UIButton *button1;
    IBOutlet UIButton *button2;

}

-(IBAction) buttonPressed:(UIButton *)sender;

@end
Run Code Online (Sandbox Code Playgroud)

和.m文件

#import "animation2ViewController.h"

@implementation animation2ViewController

-(IBAction)buttonPressed:(UIButton *)sender {

    [sender setTitle:@"new title" forState:UIControlStateNormal];
    [UIView animateWithDuration:1.0
                          delay:0.0
                        options:UIViewAnimationCurveEaseInOut
                     animations:^{
                         CATransform3D t = CATransform3DIdentity;
                         t.m34 = -1 / 1000;
                         t = CATransform3DRotate(t, 360 * M_PI / 180, 0.0, 1.0, 0.0);  //ultimately want 360 degrees but starting here first
                         [sender.layer setTransform:t];
                     } 
                     completion:^(BOOL finished) {

                     }];

}
Run Code Online (Sandbox Code Playgroud)

See*_*ega 2

M_PI 是 180\xc2\xb0 的旋转,因此这意味着您将 360\xc2\xb0 旋转了 90 次。
\n尝试t = CATransform3DRotate(t, M_PI, 0.0, 1.0, 0.0);
\n并尝试设置器错误[sender.layer setTransform:t];
\n因为你可以只变换图层

\n\n

最后你需要在最后提交动画,否则它不会动画
\n[UIView commitAnimations];

\n