将图像缩放以适应iPhone旋转屏幕

8

我有一个包含UIImageView的UIScrollView,当iPhone旋转时,我遇到了一些问题,无法获得正确的行为。

目标:我试图在从纵向到横向时获得以下效果:

_________
|AAAAAAA|
|BBBBBBB|         _________________
|CCCCCCC|         |     AAAAAA     |
|DDDDDDD|    -->  |     CCCCCC     |
|EEEEEEE|         |     EEEEEE     |
|FFFFFFF|         |_____GGGGGG_____|
|GGGGGGG|
---------

在iPhone旋转时,整个肖像视图中的所有内容都被缩放以适应全景视图。同时,也进行了居中处理,并且保留了原始宽高比例。用户可以通过互动操作来平移/缩放图像,使其占满整个屏幕。
目前,scrollView上的`autoresizingMask`如下:
 scrollView.autoresizingMask =(UIViewAutoresizingFlexibleWidth |
                               UIViewAutoresizingFlexibleHeight);       

但是这会得到以下结果。
_________
|AAAAAAA|
|BBBBBBB|         _________________
|CCCCCCC|         |AAAAAA          |
|DDDDDDD|    -->  [BBBBBB          |
|EEEEEEE|         [CCCCCC          |
|FFFFFFF|         [DDDDDD__________|
|GGGGGGG|
---------

这个设置会保留从左上角开始的比例和偏移量。

问题: 是否可以使用适当的autoresizingMask来获得这种行为?如果不行,那么应该进行设置。

 scrollView.autoresizingMask = UIViewAutoresizingNone;

在旋转时,需要手动设置UIScrollView的zoomScalecontentOffset。但是,应该在哪里进行操作?如何实现动画效果?

解决方案: 通过对下面的答案进行微小修改,使用以下代码即可实现上述行为:

imageView.autoresizingMask = (UIViewAutoresizingFlexibleWidth |
                                     UIViewAutoresizingFlexibleHeight);

scrollView.autoresizingMask =(UIViewAutoresizingFlexibleWidth 
                                     | UIViewAutoresizingFlexibleHeight);

imageView.contentMode = UIViewContentModeScaleAspectFit;
scrollView.contentMode = UIViewContentModeCenter;
2个回答

3
尝试这个:
scrollView.autoresizingMask = (UIViewAutoresizingFlexibleWidth |
                           UIViewAutoresizingFlexibleHeight);    
imageView.autoresizingMask = (UIViewAutoresizingFlexibleWidth |
                           UIViewAutoresizingFlexibleHeight);

imageView.contentMode = UIViewContentModeAspectFit; // You could also try UIViewContentModeCenter

我不确定imageView是否会在UIScrollView中自动调整大小,如果自动调整大小不起作用,您可以尝试在旋转时自己设置frame以使其等于scrollview的大小。


1
谢谢!你速度很快。为了获得正确的行为,我不得不稍微改变我们的代码(见上文),但这让我朝着正确的方向前进了。 - user467225

-1

我曾遇到过类似的情况,需要用一个非常简单的scrollView和3个imageViews(“previous”,“current”和“next”)来显示一系列照片。

这些照片都是针对iPad大小进行了调整的,但是包含了横向和纵向的不同方向。我希望它们能够适应屏幕(即使必须添加黑边),同时保持纵横比例。我发现只需要对这3个imageViews进行相应的操作就可以实现:

imageView.contentMode = UIViewContentModeScaleAspectFit;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接