我正在开发一款应用程序,在其中需要保留一个导航栏。
当我在栏上编写任何标题时,时间和标题会变得非常接近。我希望增加栏的高度,以便它可以有更多的空间。
选择你的ViewController——>选择你的Navigation Item——; Prompt——; 添加空格,它会增加导航栏
的高度
程序化:
在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
Objective-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
}
}
只需将此行代码添加到您的视图控制器中即可。
navigationController?.additionalSafeAreaInsets.top = 30
// where 30 is the extra space, add as per your need.
苹果建议不要调整navigationBar
的大小,而是从栏中删除阴影并在navigationBar
下添加自定义视图。这对大多数情况都适用。请查看苹果的示例。
将以下扩展添加到您的项目中:
import UIKit
extension UINavigationBar {
override open func sizeThatFits(_ size: CGSize) -> CGSize {
return CGSize(width: UIScreen.main.bounds.size.width, height: 80.0)
}
}
CGFloat height = 80;
[self.navigationController.navigationBar setFrame:CGRectMake(0, 0,
self.view.frame.size.width,height)];
如果它首先增加,然后缩小到原始高度,那么请在viewDidAppear方法中添加此代码。
navigationController?.additionalSafeAreaInsets.top = 25
将以下代码添加到viewDidLoad中,它一定会起作用。在Xcode 12版本中测试成功。
override func viewWillAppear(_ animated: Bool) {
self.navigationController?.navigationBar.frame = CGRect(x: 0, y: 0, width: self.view.frame.width, height: 80)
}
如果我没记错的话,您无法更改默认的NavigationBar
的高度。
但是,您可以创建自定义的NavigationBar
并为其添加自定义高度。