0

我有一个问题,希望有一个简单的解决方案。我正在尝试使用按钮、计时器、框架、cgaffinetransformrotations 和延迟来创建摆动效果。一切都会很棒,除了当按钮旋转并且我将按钮的框架设置为将 y 减少或增加 10 个左右像素时,旋转使按钮的框架比正常情况下更大。最终结果是一个不断增长的按钮,直到它吞没屏幕。

我尝试进行向上和向下的运动 cgaffinetranslations,但这使用了 transform 属性(与旋转使用的属性相同)。结果是一个非常跳跃和不现实的鲍勃。

我想要完成的只是设置框架的原点组件而不必指定宽度和高度,因为即使指定硬编码的宽度和高度仍然会使其在旋转时收缩并在接近平衡时增长再次。

有任何想法吗?

谢谢!

代码:

- (void)movePlay{
[self performSelector:@selector(moveDown:) withObject:play];
[self performSelector:@selector(rotateRight:) withObject:play afterDelay:0];
[self performSelector:@selector(moveUp:) withObject:play afterDelay:0.5];
[self performSelector:@selector(rotateLeft:) withObject:play afterDelay:1];

}

- (void)moveUp:(UIButton*)log{

[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:.5];
log.transform = CGAffineTransformMakeTranslation(0, -20);
[UIView commitAnimations];

}

- (void)rotateRight:(UIButton*)log{

[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:1];
log.transform = CGAffineTransformMakeRotation(0.0174532925*10);
[UIView commitAnimations];

}
4

1 回答 1

1

这只是一个想法。尝试将所有单独的转换组合在一起。所以与其独立提交

log.transform = CGAffineTransfor..., 

首先将它们与

CGAffineTransformConcat(CGAffineTransform t1, CGAffineTransform t2);
CGAffineTransformRotate(CGAffineTransform t1, CGFloat angle);
etc.
于 2012-04-10T01:15:38.413 回答