当我的应用程序在横向时有额外的填充顶部。 以编程方式创建导航栏时,这是我的代码。 在横向模式下删除填充顶部的任何建议吗?
let navigationBar = UINavigationBar(frame: CGRectMake(0, 0, self.view.frame.size.width, 44)
navigationBar.backgroundColor = UIColor.redColor()
navigationBar.delegate = self;
let navigationItem = UINavigationItem()
navigationItem.title = "Title"
let btnLeft = UIButton(frame: CGRectMake(0, 0, 44, 44))
btnLeft.setImage(UIImage(named: “myImage.png"), forState: .Normal)
let leftButton = UIBarButtonItem()
leftButton.customView = btnLeft
navigationItem.leftBarButtonItem = leftButton
navigationBar.items = [navigationItem]
self.view.addSubview(navigationBar)
来自模拟器的快照(风景)
模拟器快照(人像)
答案 0 :(得分:0)
您应该轻松解决此设置(例如,在viewDidLoad
中):
self.edgesForExtendedLayout = UIRectEdge.None
替代方法:您也可以将其放在UINavigationController
委托方法中(如果您已在班级中设置了导航委托UINavigationControllerDelegate
),则称为willShowViewController:
func navigationController(navigationController: UINavigationController, willShowViewController viewController: UIViewController, animated: Bool) {
viewController.edgesForExtendedLayout = UIRectEdge.None
}
如果您使用UITableView
,您也可以这样做:
self.automaticallyAdjustsScrollViewInsets = false
您也可以直接编辑属性检查器:
如果这些方法中的任何一种都不起作用,默认情况下,UINavigationBar
根据您的方向有不同的高度。例如,导航栏为纵向44点,横向为32点。
解决方法可以是:
// Create an IBOutlet of your navigationBar height constraint
@IBOutlet weak var navBarHeight: NSLayoutConstraint
override func viewWillLayoutSubviews() {
super.viewWillLayoutSubviews()
if self.view.bounds.size.height > self.view.bounds.size.width {
self.navBarHeight.constant = 44
} else {
self.navBarHeight.constant = 32
}
}