我有一个UIScrollView中的UIImageView。我使用以下代码将图像加载到UIImageView的CALayer中:

UIImage *image = [UIImage imageNamed: fileToDisplay];
NSLog(@"If I don't flip image imageScrollView.zoomScale: %f", imageScrollView.zoomScale);
[[imageView layer] setContents: (id)image.CGImage];
if (flipped)
{
    [[imageView layer] setTransform: CATransform3DMakeRotation(180.0 / 180.0 * M_PI, 0.0, 1.0, 0.0)];
    NSLog(@"If image flipped imageScrollView.zoomScale: %f", imageScrollView.zoomScale);
}

我正在沿y轴“翻转”图像。意外事件是imageView.layer的转换正在更改imageScrollView.zoomScale,如以下输出所示:

如果我不翻转图像imageScrollView.zoomScale:0.465455

如果图像翻转了imageScrollView.zoomScale:1.000000

我的问题是如何使这种情况不发生?如果没有办法消除这种行为,我该怎么做才能实现对不翻转的图像执行的图像取景。换句话说,仅将zoomScale设置为转换之前的值是行不通的。 UIScrollView中的其他更改(不是contentSize或contentOffset)。

谢谢您的帮助。

最佳答案

因为您使用的是CATransform3DMake...方法,所以您要创建一个新的转换并替换当前的转换。您需要改用CATransform3DRotate,将旋转值添加到当前变换(用于缩放)。

imageView.layer.transform = CATransform3DRotate(imageView.layer.transform , 180.0 / 180.0 * M_PI, 0.0, 1.0, 0.0);

关于ios - UIImageView.layer的变换会影响UIScrollView zoomScale,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11616241/

10-10 21:05