iphone - CATransform3d 一个 UIButton

标签 iphone animation core-animation catransform3d

我似乎无法在按钮上进行简单的 3D 转换,并且文档似乎没有帮助。我从基于 View 的应用程序模板开始。我添加了 QuartzCore 框架并将其导入到 ViewController header 中。在界面生成器中,我拖出两个圆形矩形按钮并将它们分别连接到button1和button2,并将它们连接到buttonPressed:方法。

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

当动画恢复后,我收到错误“sender.transform = t;”上的“setTransform:”参数 1 的类型不兼容行(现在固定行更改为 [sender.layer setTransform:t];)

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

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

@interface animation2ViewController : UIViewController {

    IBOutlet UIButton *button1;
    IBOutlet UIButton *button2;

}

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

@end

以及 .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) {

                     }];

}

最佳答案

M_PI 是 180° 旋转,因此这意味着您旋转 360° 90 次。
尝试 t = CATransform3DRotate(t, M_PI, 0.0, 1.0, 0.0);
对于 setter 错误,请尝试 [sender.layer setTransform:t];
因为你可以直接变换图层

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

关于iphone - CATransform3d 一个 UIButton,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5163160/

相关文章:

ios - 如何获取Show segue的计时功能和时长

javascript - 使用 ng-class 有条件地添加 CSS3 动画

jquery - 悬停进出时如何为边界半径的特定 Angular 设置动画? (火狐)

cocoa - 调用setNeedsDisplay :YES on layer-hosting view does not redraw the view

iphone - 保留日期格式以修复iPhone SDK

ios - NavigationItem 的 titleView 动画不正确

ios - 只运行一次 CAEmitterLayer

ios - App转移到新帐户后如何解决钥匙串(keychain)访问警告

iphone - Storyboard 中封面垂直过渡的对面

iphone - 从保存在 sqlite 数据库表中的日期中检索月份部分以显示月份数据