Mar*_*rio 12 iphone animation cocoa-touch
我想连续旋转UIButton,以表明应用正在录制某些内容.这是一个好主意吗.我也希望能够阻止这种连续旋转.
我如何使用动画来做到这一点?
Abi*_*ern 35
使用UIView动画方法:
animateWithDuration:delay:options:animations:completion:
Run Code Online (Sandbox Code Playgroud)
并使用该选项 UIViewAnimationOptionRepeat
例如,对于UIButton *名为的插座button:
- (void)viewDidLoad
{
[super viewDidLoad];
[UIView animateWithDuration:2.0 delay:0.0 options:UIViewAnimationOptionRepeat | UIViewAnimationOptionCurveLinear animations:^{
CGAffineTransform transform = CGAffineTransformMakeRotation(M_PI);
self.button.transform = transform;
} completion:NULL];
}
Run Code Online (Sandbox Code Playgroud)
由于它是圆形的,我只是用pi弧度而不是2pi旋转它.你可以使用你想要的任何角度.
编辑
要停止动画,只需从当前状态开始创建另一个持续时间较短的动画,例如
- (void)stopRotating {
[UIView animateWithDuration:0.1 delay:0.0 options:UIViewAnimationOptionBeginFromCurrentState | UIViewAnimationOptionCurveLinear animations:^{
CGAffineTransform transform = CGAffineTransformMakeRotation(M_PI * 0.05);
self.button.transform = transform;
} completion:NULL];
}
Run Code Online (Sandbox Code Playgroud)
这提供了一个非常短的动画,它覆盖了当前的动画.注意,变换的角度乘以0.05,这是0.1/2.0的比率,这意味着该小段的旋转速度与连续旋转速度相同.
尝试以下可以帮助您的代码,因为我成功运行了该代码.
UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[button addTarget:self action:@selector(buttonPressed:) forControlEvents:UIControlEventTouchUpInside];
[button setTitle:@"Show View" forState:UIControlStateNormal];
button.frame = CGRectMake(80.0, 210.0, 160.0, 40.0);
[self.view addSubview:button];
CABasicAnimation *halfTurn;
halfTurn = [CABasicAnimation animationWithKeyPath:@"transform.rotation"];
halfTurn.fromValue = [NSNumber numberWithFloat:0];
halfTurn.toValue = [NSNumber numberWithFloat:((360*M_PI)/180)];
halfTurn.duration = 0.5;
halfTurn.repeatCount = HUGE_VALF;
[[button layer] addAnimation:halfTurn forKey:@"180"];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13906 次 |
| 最近记录: |