5

うまくいけば誰かが私を助けてくれることを願っています。

背景として、io6 デバイスで期待どおりにレンダリングされるアプリがありますが、ios7 に準拠させようとしています。

私のコードが iPhone では期待どおりに動作しているのに、iPad では動作していないという事実が混乱を招いています。

以下の画像から、iPhone ではステータス バー (キャリア、時間、バッテリー) が期待どおりにレンダリングされるが、iPad ではレンダリングされないことがわかります。

まずはアイフォン

今iPad:

(注:これが私の最初の投稿であるため、画像を直接埋め込むことができません。申し訳ありません)。

コーディングの観点から、iOS 7 でステータス バーのテキストの色を変更する方法に示されているすべての提案を試してみました。

アプリを期待どおりにレンダリングするために私が持っているのは、私の AppDeligate の次の定義です。

// News page
newsViewController = [[NewsViewController alloc] init];
newsNavigationController = [[UINavigationController alloc] initWithRootViewController:newsViewController];
newsNavigationController.navigationBar.translucent = NO;
newsNavigationController.navigationBar.barStyle = UIStatusBarStyleLightContent;
newsNavigationController.navigationBar.tag = 4013;

問題は、バーのスタイルを に設定したにもかかわらずUIStatusBarStyleLightContent、テキストを白くする必要があることですが、iPadではこれを行っていないということです。代わりに、黒地に黒でレンダリングされます。

行を削除すると、次のようになります。

newsNavigationController.navigationBar.translucent = NO;

黒が濃い灰色に変わり、キャリア、日付、バッテリーが黒で見えます。ダーク グレーと黒の背景を使いたいと思っていますが、ステータス バーの項目は iPhone のように白でレンダリングする必要があります。

助言がありますか?

PSこれが物事を正しい方向に向けるのに役立つかどうかはわかりませんが、iPadはスプリットビューコントローラーを使用しています.

ありがとう

4

4 に答える 4

8

ステータス バーはルート ビュー コントローラーの設定を使用するため、ナビゲーション コントローラーの優先ステータス バー スタイルを調整しても iPad では機能しません。ルート ビュー コントローラーではないためです。したがって、preferredStatusBarStyleのサブクラスでオーバーライドする必要がありますUISplitViewController

@implementation DGBaseSplitViewController

- (void)viewDidLoad {
    [super viewDidLoad];
}

- (UIStatusBarStyle)preferredStatusBarStyle {
    return UIStatusBarStyleLightContent;
}

@end
于 2013-09-26T03:59:48.367 に答える
5

Wayneが推奨するようにSplitViewControllerをサブクラス化することは、有効な解決策である可能性が非常に高いですが、これが私の目的のために問題を解決した結果です。

  1. UI Status Bar Hidden = TRUE を設定します (スプラッシュ スクリーンにステータス バーを表示したくありません) [.plist に UIStatusBarHidden=true & UIStatusBarHidden~ipad = true として保存されます]

  2. .plist で設定 – UIStatusBarStyle = UIStatusBarStyleLightContent

  3. .plist で設定 – UIViewControllerBasedStatusBarAppearance = false

  4. AppDeligate の上部近くに、次の行を追加しました。

    [UIApplication sharedApplication] setStatusBarHidden:NO];

    スプラッシュ スクリーンが表示された後にステータス バーを再表示します。

于 2013-09-26T14:00:51.577 に答える
0

の組み合わせ:

  1. コントローラー ベースのステータス バーの外観を表示する = NO

  2. ステータスバーのスタイル = UIStatusBarStyleLightContent

私のために働いた

于 2014-10-06T14:16:54.767 に答える
0

info.plistにStatus bar style~ipad:を入れてみてください。UIStatusBarStyleLightContent

于 2013-09-25T19:47:42.787 に答える