【发布时间】:2012-02-22 23:32:26
【问题描述】:
我正在尝试放大 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 函数本身。怎么回事?
【问题讨论】:
-
这是放大到一个实际上只是一条线的矩形......这是你想要发生的事情吗?
-
是的,因为
zoomToRect只是缩放以将整个矩形放在屏幕上,因此另一个维度是任意的。 -
嗯,那么其中一个维度可能优先……它怎么知道哪个维度是任意的?如果纵横比关闭,也许宽度优先,从而使您的第二种方法无效?
-
宽度优先是什么意思?该方法将整个矩形放在屏幕上的工作量最少,因此宽度为 1 和图像的高度应该只是缩放,使得图像的顶部和底部与顶部和底部对齐屏幕。它并没有试图真正放大整个矩形。
-
我尝试了与上述相同的方法,但宽度符合纵横比
(IMAGE_HEIGHT * 360) / 480,但没有任何区别。
标签: iphone objective-c ios5 uiscrollview