9

iOS 5 および 6 用に iPhone アプリを設計しました。今度は、iOS 7 をサポートするだけでなく、2 つの古いバージョンもサポートしたいと考えています。多くの開発者と同様に、私はステータス バーがビューに重なることに苦労しており、iOS 7 で古いステータス バー スタイルを維持する方法がないことを理解しています。

それでも、Stackoverflow に関する多くの投稿では、新しい SDK を使用して Xcode で設定できるiOS 6/7 デルタを使用することを提案しています。

Xcode の iOS 6/7 デルタ

試してみましたが、これらの値をView Controllerのルートビューに適用しても何も起こらないことがわかりました。これらのデルタは、ルート ビューに含まれるすべてのサブビューにのみ影響します。

デルタがルート ビューで機能しないのはなぜですか? それを機能させる方法はありますか?(すべてのビュー コントローラーのすべての UI 要素にデルタを追加したくありません。)

4

5 に答える 5

1

あなたの質問から私が思うには、個々のサブビューのデルタ値を設定するのにうんざりしているようです。しかし、それは非常に簡単だと思います。すべてのサブビューを選択するだけです:

ここに画像の説明を入力

サイズインスペクターからすべてのサブビューに同じデルタ値を一度に追加できます...それと同じくらい簡単です!!

ここに画像の説明を入力

于 2014-01-30T08:38:44.560 に答える
0

もし (IS_Ios6) {

    if (IS_IPHONE_4) {
        self.view.frame = CGRectMake(0, 0, 320, 480);
    } else if (IS_IPAD){
        self.view.frame = CGRectMake(0, 0, 768, 1024);
    }
    self.wantsFullScreenLayout = YES;
}

このコードをviewDidLoadに入れます...

于 2014-07-04T12:01:06.503 に答える
0

このコード セグメントが問題を解決してくれました。これは、プロジェクト内のBaseViewControllerすべての のスーパークラスです。UIViewController各 xib ファイルのデルタを変更する代わりに、この単純なコードを追加する方がより現実的だと思います。bhavya kothari の回答から派生:

- (void)viewWillLayoutSubviews{

    [self fixStatusBarOffsetIfiOS6];
    [super viewWillLayoutSubviews];
}

- (void)fixStatusBarOffsetIfiOS6{

    if (floor(NSFoundationVersionNumber) <= NSFoundationVersionNumber_iOS_6_1){
        self.view.frame = CGRectMake(0.0, -20.0, CGRectGetWidth(self.view.frame), CGRectGetHeight(self.view.frame) + 20);
    }
}
于 2014-02-24T16:11:10.067 に答える