0

私のアプリのビューは、ios7デバイスのステータスバーとナビゲーションバーと重なっているので、多くの解決策を試しました

  • ストーリーボードの「トップバーの下」プロパティのチェックを外します
  • self.edgesForExtendedLayout = UIRectEdgeNone;
  • ストーリーボードでデルタ y を -20 に設定します...

しかし、これらのどれも機能しませんでした。私の最後の試行は、これらの行を appdelegate の didFinishLaunchingWithOptions に追加することでした

if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7) {
application.statusBarStyle = UIStatusBarStyleLightContent;
    self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].applicationFrame];
    self.window.clipsToBounds =YES;
} else {
    self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
}

ナビゲーションバーが非表示の場合は非常にうまく機能しますが、ナビゲーションが非表示でない場合、ナビゲーションバーのフレームは (0, 20, 320, 44) ではなく (0, 0, 320, 44) なので、ナビゲーションバーの高さは 64 のようです.. なぜこれが? 誰かが私を説明してくれることを願っています!よろしくお願いします:)

4

3 に答える 3

0

との重複を避けるには、そのプロパティを にUINavigationBar設定する必要があります。translucentNO

ステータス バーについては、スタイルを指定して手動で設定し、ウィンドウのフレーム全体を再配置する必要があります。その上に、iOS 7 の条件を追加して、iOS 7 を実行しているユーザーでのみ発生するようにします。

if (floor(NSFoundationVersionNumber) > NSFoundationVersionNumber_iOS_6_1) {

    [application setStatusBarStyle:UIStatusBarStyleLightContent];
    self.window.clipsToBounds =YES;
    self.window.frame =  CGRectMake(0, 20, self.window.frame.size.width, self.window.frame.size.height - 20); 
} 
于 2013-10-25T14:22:02.947 に答える