【问题标题】:Scale image to fit screen on iPhone rotation缩放图像以适应 iPhone 旋转时的屏幕
【发布时间】:2011-05-12 07:15:16
【问题描述】:

我有一个包含 UIImageView 的 UIScrollView,但在 iPhone 旋转时我很难获得正确的行为。

目标:从纵向到横向时,我试图获得以下内容:

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

当 iPhone 旋转时,纵向视图中的整个图像被缩放以适应横向视图。它也是居中的。我也试图保持纵横比。用户交互也已开启,用户应该能够使用整个屏幕来平移/缩放图像。

目前我在滚动视图上有以下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;

【问题讨论】:

    标签: iphone uiscrollview autoresizingmask


    【解决方案1】:

    试试这个:

    scrollView.autoresizingMask = (UIViewAutoresizingFlexibleWidth |
                               UIViewAutoresizingFlexibleHeight);    
    imageView.autoresizingMask = (UIViewAutoresizingFlexibleWidth |
                               UIViewAutoresizingFlexibleHeight);
    
    imageView.contentMode = UIViewContentModeAspectFit; // You could also try UIViewContentModeCenter
    

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

    【讨论】:

    • 谢谢!那很快。为了获得正确的行为,我不得不稍微改变我们的代码(见上文),但这让我有了直接的方向。
    【解决方案2】:

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

    这些照片都是为 iPad 设计的,但混合了横向和纵向。我希望它们适合屏幕,(即,如有必要,信箱),并保留纵横比。我发现我只需要对 3 个 imageViews 执行此操作即可:

    imageView.contentMode = UIViewContentModeScaleAspectFit;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-05-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-09
      • 2014-01-18
      • 2021-06-22
      • 1970-01-01
      相关资源
      最近更新 更多