Ios 确定UIImageView是否已旋转

Ios 确定UIImageView是否已旋转,ios,objective-c,Ios,Objective C,我以这种方式旋转UIImageView: -(IBAction)rotateImageView:(id)sender{ photoView.transform = CGAffineTransformRotate(photoView.transform, M_PI); } 正如您所看到的,图像可以是向上的,也可以是向下的。是否有可能检测图像是否向上或向下,以便执行以下操作: if(image is up).... 如果您只想知道图像是否已使用仿射变换旋转(如您的问题所示),可以执行以下操作:

我以这种方式旋转UIImageView:

-(IBAction)rotateImageView:(id)sender{
photoView.transform = CGAffineTransformRotate(photoView.transform, M_PI);
}
正如您所看到的,图像可以是向上的,也可以是向下的。是否有可能检测图像是否向上或向下,以便执行以下操作:

if(image is up)....

如果您只想知道图像是否已使用仿射变换旋转(如您的问题所示),可以执行以下操作:

if (CGAffineTransformIsIdentity(photoView.transform)) { 
    // not rotated
    ...
} else {
    // rotated
    ...
}
如果要检查特定旋转,请执行以下操作:

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

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

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

CGFloat angle=[(NSNumber*)[photoView-valueForKeyPath:@“layer.transform.rotation.z”]floatValue];

NSLog(@“%f”,角度)

Swift 4

if transform.isIdentity { }

有点离题,虽然我有时在代码中做类似的事情,但不建议使用视图来存储数据(在本例中,是图像视图的旋转),“正确”的解决方案是在基础数据或控制器中有一个属性,并在更新属性时将其应用于视图。