これが望ましい結果です。青い領域は、対象の UIView です。UIView は UIImageView ではありません。
自動サイズ変更マスクを使用してあらゆる種類のアレンジを試みましたが、役に立ちませんでした
これが望ましい結果です。青い領域は、対象の UIView です。UIView は UIImageView ではありません。
自動サイズ変更マスクを使用してあらゆる種類のアレンジを試みましたが、役に立ちませんでした
これは、プログラムによってのみ行うことができます。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);
}
}
さまざまな画面サイズを扱うのは難しい場合があります。あなたの場合はそうではありません:)ビューを画面の中央に配置したいので、ビューの中心を画面の中心に設定するだけです。
CGRect screenBounds = [[UIScreen mainScreen] bounds];
view.center = CGPointMake(screenBounds.size.width/2,screenBounds.size.height/2);
このコードは、ビューの superView の境界が screenBounds と同じサイズであることを前提としています。
最初: UIView をサブクラス化します (MYUIView を作成します)。2番目:メソッドをオーバーライドする
- (void)layoutSubviews {
[super layoutSubviews];
// .. put your code...
}
画面サイズを読み取って、そのメソッド内でフレームの更新を手動で実行します。自動サイズ変更マスクは UIViewAutoresizingNone に設定する必要があります。