42

ナビゲーション バーまたはツールバー (ストーリーボード) をビュー コントローラーにドラッグするときに問題が発生します。

UINavigationBar:

UINavigationBar

上の画像でわかるように、右のボタンはステータス バーにほぼ重なっています。

UIToolbar を使用すると、同じことが起こります。

UIツールバー

このビュー コントローラーは、モーダルとして使用することを目的としています。これが、私が UINavigationController を使用していない理由です。

別のセクションで UINavigationController を使用すると、期待どおりに表示されます。

UINavigationController

ステータスバーをオーバーラップさせずに UINavigationBar / UIToolbar をビュー コントローラにドラッグするにはどうすればよいですか?

4

6 に答える 6

48

ナビゲーション バーまたはツールバーは (0, viewController.topLayoutGuide.length) で、バーの位置は である必要がありUIBarPositionTopAttachedます。ナビゲーション バーまたはツールバーのデリゲートをビュー コントローラーに設定し、UIBarPositionTopAttached. 正しく配置されていれば、3 番目の画像に結果が表示されます。

詳細はこちら: https://developer.apple.com/documentation/uikit/uibarpositioningdelegate?language=objc

于 2013-09-19T17:59:31.133 に答える
5

この問題は、テクニカル ノート(ビューがステータス バーで覆われないようにする) に従って、自動レイアウトを使用することで解決できます。

ここにいくつかの抜粋があります:

最上部のビューに垂直スペース制約を追加します

  • UIToolbar から「トップ レイアウト ガイド」へのコントロール ドラッグ
  • ポップオーバーで、「垂直間隔」を選択します
  • 「Vertical Space Constraint」定数を 0 (ゼロ) に変更します。

UIToolbar の下に他のサブビューがある場合は、これらのビューをトップ レイアウト ガイドの代わりにツールバーに固定します。

これにより、ios6 および ios7 がサポートされます。

于 2013-09-27T02:39:46.297 に答える
0

私はあきらめて、navbar の高さの制約を x xib ベースの VC で 64 に設定する必要がありました。ステータスバーが存在するにもかかわらず、viewController.topLayoutGuide.length が viewDidLoad で 0 になります:-[つまり、iPad の非ユニバーサル アプリでは 20 px になります。無駄なビューの上部に(ステータスバーがiPhoneシミュレーションウィンドウとは別であるため)

于 2016-03-17T16:31:26.863 に答える
0

また、ios 版では 620x128 のサイズの画像を提供することで、ナビゲーション バーの高さを増やすことで管理できます。そして、この画像はで使用されています:

if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7.0)?YES:NO) {
    [self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"newImage.png"] forBarMetrics:UIBarMetricsDefault];
}else{
    [self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"previousImage.png"] forBarMetrics:UIBarMetricsDefault];
}
于 2013-09-27T12:35:57.163 に答える