0

我正在尝试使用以下代码在包含一些 CALayers 的 iPhone 上旋转 320x320 UIView(黑色):

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    [UIView beginAnimations:nil context:NULL];
    [UIView setAnimationDuration:2];
    CGAffineTransform rr=CGAffineTransformMakeRotation(M_PI_2*2);
    self.transform=rr;
    [UIView commitAnimations];
}

请注意,M_PI_2 是 pi/2 (math.h)。此代码将视图旋转 180°。但是,如果我将它自己更改为 M_PI_2(没有 *2),黑色 UIView 消失,内容向下和向右移动,然后大部分旋转到屏幕外。为什么是这样?我很困惑为什么视图不只是旋转 90°。

4

1 回答 1

1

因为,transform不同于affineTransformtransform需要一个CATransform3D结构,因此您应该改用便捷方法setAffineTransform

编辑

所以它似乎self是一个 UIView 而我上面的答案是无关紧要的。尝试使用[UIView setAnimationBeginsFromCurrentState:YES].

于 2013-01-23T03:36:58.903 回答