2

これが望ましい結果です。青い領域は、対象の UIView です。UIView は UIImageView ではありません。

ここに画像の説明を入力

自動サイズ変更マスクを使用してあらゆる種類のアレンジを試みましたが、役に立ちませんでした

4

3 に答える 3

1

これは、プログラムによってのみ行うことができます。1つのオプションは、@ user2223761がサブクラス化で提案するものです。UIView をサブクラス化したくない場合は、向きの変更時にフレームを設定し、yourView.center を中心に設定する必要があります。

- (void) willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation duration:(NSTimeInterval)duration {

   if (UIInterfaceOrientationIsLandscape(interfaceOrientation)) {
          // Make sure that the frame is centered in the screen
          NSInteger paddingLeftSide = (self.view.bounds.size.width - 480) / 2;
          self.view.frame = CGRectMake(paddingLeftSide, 0, 480, 320);   
      } else {
          self.view.frame = CGRectMake(0, 0, 320, 320);
      }
  }
于 2013-04-05T23:21:01.240 に答える
1

さまざまな画面サイズを扱うのは難しい場合があります。あなたの場合はそうではありません:)ビューを画面の中央に配置したいので、ビューの中心を画面の中心に設定するだけです。

CGRect screenBounds = [[UIScreen mainScreen] bounds];
view.center = CGPointMake(screenBounds.size.width/2,screenBounds.size.height/2);

このコードは、ビューの superView の境界が screenBounds と同じサイズであることを前提としています。

于 2013-03-28T11:16:31.060 に答える
0

最初: UIView をサブクラス化します (MYUIView を作成します)。2番目:メソッドをオーバーライドする

- (void)layoutSubviews {
   [super layoutSubviews];
   // .. put your code...
}

画面サイズを読み取って、そのメソッド内でフレームの更新を手動で実行します。自動サイズ変更マスクは UIViewAutoresizingNone に設定する必要があります。

于 2013-03-29T08:53:26.750 に答える