我有这个功能将UIButtons旋转45度。但是一旦它旋转,回想起相同的方法不再进行旋转,并且在第一次旋转之后按钮被卡在其旋转位置。有任何想法吗?
- (void)rotateImage:(UIButton *)image duration:(NSTimeInterval)duration
curve:(int)curve degrees:(CGFloat)degrees
{
// Setup the animation
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:duration];
[UIView setAnimationCurve:curve];
[UIView setAnimationBeginsFromCurrentState:YES];
// The transform matrix
CGAffineTransform transform =
CGAffineTransformMakeRotation(DEGREES_TO_RADIANS(degrees));
image.transform = transform;
// Commit the changes
[UIView commitAnimations];
}
答案 0 :(得分:4)
transform
属性是绝对的。如果您想要从当前位置进行相对旋转,您需要跟踪按钮的绝对旋转并使用现有方法(可能更快),或将新旋转连接到现有旋转。下面是连接旋转矩阵的代码。
我没有使用我的Obj-C(我使用的是MonoTouch),但它可能在C中看起来像这样:
image.transform = image.transform.Rotate(DEGREES_TO_RADIANS(degrees));
或者这个:
image.transform = CGAffineTransformationConcat(
image.transform,
CGAffineTransformMakeRotation(DEGREES_TO_RADIANS(degrees));
)
随意修改此帖子以使其适当Obj-C。