为什么我的图像不能在Xcode中旋转?
我试图做一个简单的动画,当点击一个按钮时会不断旋转图像,但由于某种原因,当我点击按钮时会使应用程序崩溃。为什么我的图像不能在Xcode中旋转?
这是我的代码。
.h文件中:
@interface MainView : UIView {
}
IBOutlet UIImageView *sunray;
- (IBAction)pushrotate:(id)sender;
@end
.m文件:
@implementation MainView
- (IBAction)pushrotate:(id)sender {
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0];
sunray.transform = CGAffineTransformMakeRotation(6.2831855);
[UIView commitAnimations];
}
-(void) dealloc {
[sunray dealloc];
[sunray release];
[super dealloc];
}
@end
任何想法,我怎样才能使它发挥作用?另外,在应用程序加载后立即启动动画的最佳方式是什么?
如果您将视图旋转角度设置为2 * PI的倍数(在您的情况下它看起来如此),那么视图将识别转换实际上没有效果并且视图不会旋转。
要旋转角度多于2 * PI的动画,您需要使用CoreAnimation。所以,你的代码看起来应该像水木清华:
//link with QuartzCore.framework
#import <QuartzCore/QuartzCore.h>
...
CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"];
animation.fromValue = [NSNumber numberWithFloat:0.0f];
animation.toValue = [NSNumber numberWithFloat: 2*M_PI];
animation.duration = 1.0f;
[sanray.layer addAnimation:animation forKey:@"MyAnimation"];
你可能有线的动作或出口错了(如果你贴得更控制台输出,我们可以肯定的)。查看Interface Builder是否在您的动作/插座上有任何错误标记。
另请参见我的关于调用dealloc自己的注释 - 除了[super dealloc]在您自己的dealloc实现中,您不应该这么做。
史蒂文 - 我已经竖起了行动和网点,但现在已经修复它,并且点击按钮现在不做任何事情! – Ian 2011-03-29 12:45:53
您正在旋转2 * PI - >整圆 – 2011-03-29 12:50:42
尝试通过M_PI_2(这是一个预定义的常数,相当于90度)旋转而不是6.2831855 – 2011-03-29 12:51:58
这里是我的解决方案,以旋转图像
-(void)rotate:(int)degree {
float rad = M_PI * (float)degree/180.0;
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:0];
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
aktivImageView.transform = CGAffineTransformMakeRotation(rad);
[UIView commitAnimations];
}
我想你也可以使用此代码剪断的一个按钮
在IBAction为你代码[自旋转:90]。在90° 率或您可以使用[自我旋转:0];以不旋转您的图像;-)
你检查sunray不是零吗?你有没有在IB中正确连接它? – HeikoG 2011-03-29 11:11:55
如果它崩溃,那么你可能已经错误地连接了你的按钮。请在崩溃后在控制台上提供消息。 – Tommy 2011-03-29 11:19:50
是的错误代码是抛出一个'NSException'的实例后调用终止,我确实触摸了按钮按下。 – Ian 2011-03-29 11:30:31