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

时间:2010-11-18 21:12:34

标签: iphone uiscrollview autoresizingmask

我有一个包含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 个答案:

答案 0 :(得分:3)

试试这个:

scrollView.autoresizingMask = (UIViewAutoresizingFlexibleWidth |
                           UIViewAutoresizingFlexibleHeight);    
imageView.autoresizingMask = (UIViewAutoresizingFlexibleWidth |
                           UIViewAutoresizingFlexibleHeight);

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

我不确定imageView是否会在UIScrollView中自动调整大小,因此如果自动调整不起作用,您可以尝试在旋转时自行设置框架以等于滚动视图的大小。

答案 1 :(得分:-1)

我有一个类似的情况,一个非常简单的scrollView,有3个imageViews('previous','current'和'next')来显示一系列照片。

这些照片都是针对iPad的尺寸,但是混合了横向和纵向。我希望它们适合屏幕,(如果需要,也可以是信箱),保留纵横比。我发现我只需要对3个imageView进行此操作:

imageView.contentMode = UIViewContentModeScaleAspectFit;