私は、ナビゲーションバーを保持する必要があるアプリを開発しています。バーにタイトルを書くと、時間とタイトルが非常に近くなります。バーの高さを上げたいと思ったので、息をのむ部屋ができました。
select yourViewController-> select yourNavigation Item->Prompt-> Addspaceitincrease**Navigation bar**
のheight
プログラム的に
これをviewWillAppearまたはviewDidAppearメソッドに追加します
Objective-C
[self.navigationController.navigationBar setFrame:CGRectMake(0, 0, self.view.frame.size.width,80.0)];
Swift
self.navigationController.navigationBar.frame = CGRectMake(0, 0, self.view.frame.size.width, 80.0)
Swift-3
self.navigationController!.navigationBar.frame = CGRect(x: 0, y: 0, width: self.view.frame.size.width, height: 80.0)
iOS 11
目的C
for (UIView *subview in self.navigationController.navigationBar.subviews) {
if ([NSStringFromClass([subview class]) containsString:@"BarBackground"]) {
CGRect subViewFrame = subview.frame;
// subViewFrame.Origin.y = -20;
subViewFrame.size.height = 100;
[subview setFrame: subViewFrame];
}
}
Swift
for subview in (self.navigationController?.navigationBar.subviews)! {
if NSStringFromClass(subview.classForCoder).contains("BarBackground") {
var subViewFrame: CGRect = subview.frame
// subViewFrame.Origin.y = -20;
subViewFrame.size.height = 100
subview.frame = subViewFrame
}
}
ここで、拡張ナビゲーションバーのApple推奨アプローチを参照してください。
https://developer.Apple.com/library/content/samplecode/NavBar/Introduction/Intro.html
次の拡張子をプロジェクトに追加します。
import UIKit
extension UINavigationBar {
override open func sizeThatFits(_ size: CGSize) -> CGSize {
return CGSize(width: UIScreen.main.bounds.size.width, height: 80.0)
}
}
Apple proposesnavigationBar
自体のサイズを変更せず、バーから影を削除し、navigationBar
の下にカスタムビューを追加します。これはほとんどの場合に機能します。 Appleのサンプルを確認してください。
これをviewWillAppearメソッドに追加します
CGFloat height = 80;
[self.navigationController.navigationBar setFrame:CGRectMake(0, 0,
self.view.frame.size.width,height)];
最初に増加して元の高さに縮小する場合、このコードをviewDidAppearメソッドに追加します
私が間違っていなければ、デフォルトのNavigationBar
の高さを変更することはできません。
ただし、カスタムNavigationBar
を作成して、カスタムの高さを追加できます。
ビューを表示するたびにナビゲーションバーの高さを変更する必要があるため、viewWillAppearにコードを配置します
override func viewWillAppear(_ animated: Bool) {
self.navigationController?.navigationBar.frame = CGRect(x: 0, y: 0, width: self.view.frame.width, height: 80)
}
ビューの幅として幅を設定し、必要に応じて高さを変更できます。
ナビゲーションバーを非表示にし、独自にカスタムバーを実装します。そうすれば、希望どおりにスタイルを設定できます。
その方法に関する簡単なチュートリアルがあります: https://www.codeschool.com/blog/2014/11/11/ios-app-creating-custom-nav-bar/