我似乎不能让一个简单的3d转换在一个按钮上工作,而且文档似乎也没有帮助。我从一个基于视图的应用程序模板开始。我添加了QuartzCore框架并将其导入到ViewController标头中。在界面构建器中,我拖出两个圆形矩形按钮,将它们分别连接到button1和button2,还将它们连接到buttonPressed:方法。
快速运行已注释掉的动画将验证是否只有单击的按钮更改其标签。
随着动画的返回,我在“setTransform= t;”行(这现在是更改为sender.layer setTransform:t;的固定行)上得到了‘sender.transform:’的参数1的类型不兼容错误。
我如何让它旋转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) {
}];
}发布于 2011-03-03 02:15:54
M_PI是180°的旋转,所以这意味着你要做90次360°的旋转。
试试t = CATransform3DRotate(t, M_PI, 0.0, 1.0, 0.0);
对于设置器错误,请尝试使用[sender.layer setTransform:t];
因为你只需要变换图层
最后,你需要在最后提交动画,否则它不会有动画效果
[UIView commitAnimations];
发布于 2012-07-22 02:57:01
试试这个:
the
1/3 of a full rotation
你现在可能已经弄明白了,因为你的帖子是一年前的事情了,但是对于任何有同样问题的人来说,尝试一下它应该是可行的。
https://stackoverflow.com/questions/5163160
复制相似问题