我正在尝试放大UIImage,这样我就能看到尽可能多的照片而不显示空白区域。因此,在肖像中我想要缩放,以便图像两侧中较短的一侧完全适合屏幕。以下所有代码均位于viewDidLoad
。
我设置UIImageView
和UIScrollView
如下:
self.scrollView.delegate = self;
self.scrollView.contentSize = self.imageView.image.size;
self.imageView.frame = CGRectMake(0, 0, IMAGE_WIDTH, IMAGE_HEIGHT);
此时,UIScrollView
内的缩放和滚动效果非常好。
然后我实现了一个if-else
,这样当图片比它宽的时候我打电话:
[self.scrollview zoomToRect:CGRectMake(0, 0, IMAGE_WIDTH, 1)];
这完美无缺。图像的宽度填满了屏幕的宽度,我只能向上和向下滚动。
但是当我为高度调用完全相同的函数时:
[self.scrollview zoomToRect:CGRectMake(0, 0, 1, IMAGE_HEIGHT)];
什么也没有!完全没有缩放,就像从未调用过该函数一样。但是我设置了一个断点并逐步调试了调试器中的代码,所有内容都被完美地调用,甚至是CGRectMake
函数本身。发生了什么事?
答案 0 :(得分:0)
zoomToRect方法也有参数'animated',即:
[self.scrollview zoomToRect:CGRectMake(0, 0, 1, IMAGE_HEIGHT) animated:NO];
因此可能导致问题。如果没有,你可以试试这个:
CGFloat scale1 = IMAGE_WIDTH / self.scrollview.frame.size.width;
CGFloat scale2 = IMAGE_HEIGHT / self.scrollview.frame.size.height;
[self.scrollview setZoomScale:MAX(scale1, scale2) animated:NO];
[self.scrollView scrollRectToVisible:CGRectMake(0,0,0,0) animated:NO];
答案 1 :(得分:0)
根据上面的评论,请确保为要缩放的给定宽高比选择同时具有宽度和高度的矩形。
[self.scrollview zoomToRect:CGRectMake(0, 0, IMAGE_WIDTH * WIDTH_OF_VIEW / HEIGHT_OF_VIEW, IMAGE_HEIGHT)];