0

メイン画面と self.view は、向きに関係なく常に同じ幅と高さの寸法を維持するという事実の背後にあるロジックは何ですか (self.view が現在のデバイスの向きに合わせて正しくサイズ変更されても)、サブビューデバイスの向きが変わると、self.view は変更された幅と高さの寸法を返しますか?

NSLog(@"screen bounds w: %f, h: %f", [[UIScreen mainScreen] bounds].size.width,[[UIScreen mainScreen] bounds].size.height );

NSLog(@"self.view frame w: %f, h: %f", self.view.frame.size.width, self.view.frame.size.height );

NSLog(@"myView frame w: %f, h: %f", _myView.frame.size.width, _myView.frame.size.height );

ログ出力の縦長

2012-11-05 16:15:11.152 test[2807:11303] screen bounds w: 320.000000, h: 480.000000
2012-11-05 16:15:11.153 test[2807:11303] self.view frame w: 320.000000, h: 460.000000
2012-11-05 16:15:11.153 test[2807:11303] myView frame w: 320.000000, h: 460.000000

ログ出力風景

2012-11-05 16:14:38.800 test[2807:11303] screen bounds w: 320.000000, h: 480.000000
2012-11-05 16:14:38.801 test[2807:11303] self.view frame w: 300.000000, h: 480.000000
2012-11-05 16:14:38.801 test[2807:11303] myView frame w: 480.000000, h: 300.000000
4

3 に答える 3

1

それは、サブビューに設定されているautoSizingMaskプロパティによって異なります。

iOS 6.0 のAutoLayout機能を使用していないと思います。その場合は、iOS 6.0 の Constraints 設定を詳しく調べる必要があります。

デフォルトでは、ビューの自動サイズ調整マスクは「Scale to Fill」で、添付の画像を参照してください。要件に基づいて、サブビューに同じものを設定できます。Struts と Springs の詳細については、Apple ドキュメントを参照してください。

自動サイズ調整が要件に合わない場合は、カスタム メソッドを実装して、方向が変更されたときにビューをレイアウトする必要があります。以下のようなもの;

- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration {
    [UIView animateWithDuration:duration animations:^{
        [self layoutForOrientation:toInterfaceOrientation];
    }];
}

#pragma mark - Layout views

- (void)layoutForOrientation:(UIInterfaceOrientation)orientation {
    if (UIInterfaceOrientationIsPortrait(orientation))
        [self layoutPortraitViews];
    else
        [self layoutLandscapViews];
}

- (void)layoutLandscapViews {
    // Layout your landscape views
}

- (void)layoutPortraitViews {
   // Layout your portrait views
}

メイン ビューのデフォルトの自動サイズ変更マスク

于 2012-11-05T09:20:30.390 に答える
1

実際には、マスクの自動サイズ変更以上のものです。したがって、デバイスの向きを変更しても、画面の物理的特性は変わりません。ビューを自動回転に設定すると、幅と高さが自動的に変換されます。したがって、翻訳されたビューで画面のサイズを尋ねると、その imp. ではなくself.view.centerorに基づいて計算を行うためです。self.view.boundsself.view.frame

于 2012-11-05T09:28:16.983 に答える
1

[UIScreen mainScreen]いつも320wとiPhone用480h568hiPhone5用)です。
の寸法は[UIScreen mainScreen]、縦向きのものです。

デバイスのステータス バーは、 に従ってアプリに表示されますNSLog。このため300h、横向きと460h縦向きがあります。

于 2012-11-05T09:33:33.990 に答える