8

UIImageView を含む UIScrollView があり、iPhone が回転したときに正しい動作を得るのに問題があります。

目標:縦向きから横向きにするときに、次のことを取得しようとしています。

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

ここでは、縦向きビューの画像全体が、iPhone が回転したときに横向きビューに収まるようにスケーリングされます。こちらも中心です。また、アスペクト比を維持しようとしています。ユーザー インタラクションもオンになっており、ユーザーは画面全体を使用して画像をパン/ズームできる必要があります。

現在autoresizingMask、scrollViewには次のものがあります。

 scrollView.autoresizingMask =(UIViewAutoresizingFlexibleWidth |
                               UIViewAutoresizingFlexibleHeight);       

しかし、これは次のようになります

_________
|AAAAAAA|
|BBBBBBB|         _________________
|CCCCCCC|         |AAAAAA          |
|DDDDDDD|    -->  [BBBBBB          |
|EEEEEEE|         [CCCCCC          |
|FFFFFFF|         [DDDDDD__________|
|GGGGGGG|
---------

この設定では、スケールと左上隅からのオフセットが維持されます。

質問: 適切な を使用してこの動作を取得することは可能autoresizingMaskですか? そうでない場合は、おそらく設定する必要があります

 scrollView.autoresizingMask = UIViewAutoresizingNone;

手動で設定zoomScalecontentOffset、回転時に UIScrollView を設定します。しかし、それはどこで行うべきですか?その変化をアニメートするのはどうですか?

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

imageView.autoresizingMask = (UIViewAutoresizingFlexibleWidth |
                                     UIViewAutoresizingFlexibleHeight);

scrollView.autoresizingMask =(UIViewAutoresizingFlexibleWidth 
                                     | UIViewAutoresizingFlexibleHeight);

imageView.contentMode = UIViewContentModeScaleAspectFit;
scrollView.contentMode = UIViewContentModeCenter;
4

2 に答える 2

3

これを試して:

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

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

imageView が UIScrollView 内で自動的にサイズ変更されるかどうかはわかりません。そのため、自動サイズ変更が機能しない場合は、回転時にフレームを自分で設定して、スクロールビューのサイズに等しくすることができます。

于 2010-11-18T21:36:41.660 に答える
-1

同様の状況がありました。一連の写真を表示するための3つのimageView(「前」、「現在」、および「次」)を備えた非常に単純なscrollViewです。

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

imageView.contentMode = UIViewContentModeScaleAspectFit;
于 2012-02-15T19:52:46.873 に答える