9

我以这种方式旋转 UIImageView:

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

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

if(image is up)....
4

3 回答 3

11

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

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

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

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

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

于 2013-01-30T20:30:10.887 回答
1

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

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

于 2016-02-29T05:39:46.553 回答
1

斯威夫特 4

if transform.isIdentity { }
于 2020-06-06T07:09:38.330 回答