繁体   English   中英

缩放图像以适合iPhone旋转屏幕

[英]Scale image to fit screen on iPhone rotation

我有一个包含UIImageView的UIScrollView,并且在iPhone旋转时遇到一些麻烦,无法获得正确的行为。

目标:从肖像到风景时,我试图获得以下信息:

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

当iPhone旋转时,纵向视图中的整个图像将按比例缩放以适合横向视图。 它也居中。 我也在尝试保持宽高比。 用户交互也处于开启状态,并且用户应该能够使用整个屏幕来平移/缩放图像。

目前,我在autoresizingMask上具有以下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;

尝试这个:

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

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

我不确定imageView是否会在UIScrollView中自动调整大小,因此,如果自动调整大小不起作用,您可以尝试自行将帧设置为与scrollview的大小相等。

我有一个类似的情况,一个非常简单的scrollView带有3个imageViews(“上一个”,“当前”和“下一个”)来显示一系列照片。

这些照片的大小均适用于iPad,但混合了横向和纵向。 我希望它们适合屏幕(例如,如有必要,请用黑框显示),并保留宽高比。 我发现我只需要对3个imageView进行操作即可:

imageView.contentMode = UIViewContentModeScaleAspectFit;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM