仅设置框架的CGPoint

时间:2012-04-10 00:40:34

标签: objective-c animation rotation frame cgpoint

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

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

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

有什么想法吗?

谢谢!

CODE:

- (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];

}

1 个答案:

答案 0 :(得分:1)

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

log.transform = CGAffineTransfor..., 

首先将它们与

结合起来
CGAffineTransformConcat(CGAffineTransform t1, CGAffineTransform t2);
CGAffineTransformRotate(CGAffineTransform t1, CGFloat angle);
etc.