質問

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;

そして手動で設定 zoomScale そして contentOffset 回転時の UIScrollView の場合。しかし、それはどこで行うべきでしょうか?その変化をアニメーション化するのはどうでしょうか?

解決:以下の回答をわずかに変更することで、以下のコードを使用して上記の動作を取得しました。

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 内で自動的にサイズ変更されるかどうかはわかりません。そのため、自動サイズ変更が機能しない場合は、回転時にスクロールビューのサイズと同じになるようにフレームを自分で設定してみてください。

他のヒント

私も同様の状況で、一連の写真を表示するための 3 つの imageView (「前」、「現在」、「次」) を持つ非常に単純なスクロールビューがありました。

写真はすべて iPad 用のサイズでしたが、横向きと縦向きが混在していました。画面内に収まるようにしたかったのです(すなわち、必要に応じてレターボックス化されます)、アスペクト比は維持されます。これを機能させるには、3 つの imageView に対してこれを行うだけでよいことがわかりました。

imageView.contentMode = UIViewContentModeScaleAspectFit;
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top