我在UIScrollView中有一个图像,我可以放大和缩小。 我有一个按钮,让用户将图像旋转90度:
(void)RotateImage {
CGAffineTransform rotateTrans = CGAffineTransformMakeRotation(-90.0 / 180.0 * 3.14);
BaseImg.transform = rotateTrans;
}
旋转成像后,我无法放大和缩小..图像在屏幕上变得疯狂并返回到UNRotated状态。
我做错了什么?代码示例会很棒! 谢谢:))
答案 0 :(得分:1)
UIScrollView喜欢接管它包含的视图的转换。有两种解决方案:
要旋转图片,请参阅How to Rotate a UIImage 90 degrees?。如果您始终只进行90度旋转,请参阅@Peter Sarnowski's solution。为了使其适应您在此处所做的事情,假设BaseImg
是UIImageView
:
- (void) rotateImage
{
UIImage *sourceImage = [baseImg image];
UIImage *rotatedImage = [UIImage imageWithCGImage:[sourceImage CGImage] scale:1.0 orientation:UIImageOrientationRight];
[baseImg setImage:rotatedImage];
}
这只会旋转一次。要使rotateImage重复工作,请读取现有的orientation
属性,然后按顺时针或逆时针顺序将其移动到下一个属性。
如果图片不是方形,您可能还需要调整baseImg
的大小以反映其新的宽高比。
要创建UIView子类,您需要将CALayer
存储为视图层的子层。将图像存储在子图层中,并随意转换子图层。这样更快,并允许任意旋转,但您需要计算自己的缩放比例,以防止旋转图像超出视图范围。
答案 1 :(得分:0)
要简单地旋转图像,代码是完美的,但要添加放大和缩小,然后添加旋转,您需要保留其变换。这是一个可以帮助您的示例代码。