0

複数のサブビューを持つ scrollView があります。サブビューは次のように定義されます。

CGRect screenRect = [[UIScreen mainScreen] bounds];
CGRect rect = imageView.frame;
rect.size.height = screenRect.size.height;
rect.size.width = screenRect.size.width;
imageView.frame = screenRect;
[scrollView addSubview:imageView];

インターフェイスの向きを横向きに変更するまで、これは正常に機能します。imageView はまだ縦長モードで、画像を半分にカットしています。縦長の高さと幅を横長の高さと幅に変更するにはどうすればよいですか?

4

3 に答える 3

1

コードに次の行を追加して、次を確認します。

[imageView setAutoresizesSubviews:YES];
[imageView setAutoresizingMask:UIViewAutoresizingFlexibleWidth];

[imageView setAutoresizesSubviews:YES];
[imageView setAutoresizingMask:UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight];

こちらのリンクもチェック。

于 2012-09-26T18:21:52.420 に答える
1

いくつかの考え:

  1. ではなく[[UIScreen mainScreen] bounds]、 を使用しますself.view.bounds。これは (a) ステータス バー、ナビゲーション バーなどを除外します。(b) 回転すると、幅と高さが自動的に更新され、新しい寸法が反映されます。

  2. イメージビューのサイズを変更したい場合は、通常、 のように設定しautoresizingMaskますUIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleWidth

  3. イメージビューを確認して、イメージ全体が常に表示されるcontentModeように設定することをお勧めします。UIViewContentModeScaleAspectFitそうすれば、縦長の画像がある場合、常に縦長に表示され、歪みや切れることはありません。

  4. デバイスを回転させたときに画像ビュー自体が横向きにサイズ変更されるのが気に入らない場合はviewWillLayoutSubviews、iOS5 でそのフレームをリセットできます (iOS4 では、 を使用しますwillAnimateRotationToInterfaceOrientation)。

于 2012-09-26T19:08:57.940 に答える
0

UIDeviceOrientationDidChangeNotificationをリッスンする必要があります

詳細については、http: //developer.apple.com/library/ios/#documentation/uikit/reference/UIDevice_Class/Reference/UIDevice.htmlをご覧ください。

変更を検出したら、同じコードをもう一度呼び出します。

于 2012-09-26T18:12:14.333 に答える