1

私は[[UIScreen mainScreen] bounds]多くのサブビューをフレーミングするための基礎として利用しています。また、アプリで使用できる便利なビュースペースのフレーミングを最終的に決定するために、からの値を使用してい[[UIApplication sharedApplication] statusBarFrame]ます。self.navigationController.toolbar.frame

デバイスの回転を処理しようとすると、問題が発生します。いくつかのデバッグで、上記のメソッドから取得した値が必ずしも私が探しているものではないことを学びました。

つまり、デバイスの回転に関係なく、最終的には作業領域であるビューのサイズ(画面からステータスとナビゲーションコントロールツールバーを引いたもの)を探しています。このサイズ/フレームを入手するようにどのようにアドバイスしますか?

ありがとう。

4

2 に答える 2

1

この投稿の情報をフォローすることでこれを解決しました--stackoverflow.com/q/7905432/870345。私のコード:

- (CGSize)currentSize
{
    CGSize size = [UIScreen mainScreen].bounds.size;
    UIApplication *application = [UIApplication sharedApplication];
    if (UIInterfaceOrientationIsLandscape([UIApplication sharedApplication].statusBarOrientation)) {
        size = CGSizeMake(size.height, size.width);
    }
    if (application.statusBarHidden == NO) {
        size.height -= MIN(application.statusBarFrame.size.width, application.statusBarFrame.size.height);
    }
    size.height -= self.navigationController.navigationBar.frame.size.height;
    return size;
}
于 2012-04-26T14:44:52.307 に答える
0

おそらく最善の方法ではありませんが、ビューに UIView をドロップし、そのスプリングとストラットを設定して、自動サイズ変更してフルスクリーンのままにすることができます。次に、アウトレットを介してフレームをこのビューに取得します。

于 2012-04-25T15:59:50.670 に答える