确定UIImageView是否已旋转

时间:2013-01-30 16:47:08

标签: ios objective-c

我正在以这种方式旋转UIImageView:

-(IBAction)rotateImageView:(id)sender{
photoView.transform = CGAffineTransformRotate(photoView.transform, M_PI);
}

如您所见,图像可以向上或向下。是否可以检测图像是上升还是下降,以便执行以下操作:

if(image is up)....

3 个答案:

答案 0 :(得分:11)

如果您只是想知道图像是否使用仿射变换进行了旋转,正如您的问题所暗示的那样,您可以这样做:

if (CGAffineTransformIsIdentity(photoView.transform)) { 
    // not rotated
    ...
} else {
    // rotated
    ...
}

如果要检查特定轮换,请执行以下操作:

CGAffineTransform t = CGAffineTransformMakeRotation(M_PI);
if (CGAffineTransformEqualToTransform(photoView.transform, t)) {
    // rotated by M_PI
    ...
}

请注意,只有在旋转变换的同时不对视图应用OTHER仿射变换时,上述两种解决方案才有效。如果您还要应用其他变换,也许最好只跟踪变量中的旋转状态。

答案 1 :(得分:0)

您可以检查photoView的角度,如果它是0.00表示它的向上,如果它的3或3.13或任何接近的值,则表明它已经向下。 (你可以记录下来的确切值。)

CGFloat angle = [(NSNumber *)[photoView valueForKeyPath:@"layer.transform.rotation.z"] floatValue]; NSLog(@"%f", angle);

答案 2 :(得分:0)

快捷键4

if transform.isIdentity { }