我在UINavigationBar
viewDidLoad()
let navbar = UINavigationBar(frame: CGRect(x: 0, y: 0, width: self.view.frame.size.width, height: 59.0))
self.view.addSubview(navbar)
然后我使用此代码添加了两个按钮:
let item = UINavigationItem()
item.leftBarButtonItem = UIBarButtonItem(title: "Back", style: .Done, target: self, action: #selector(CollectionCollectionViewController.goBack(_:)))
item.rightBarButtonItem = UIBarButtonItem(barButtonSystemItem: .Add, target: self, action: #selector(CollectionCollectionViewController.addProduct(_:)))
navbar.setItems([item], animated: true)
一切都很好,但这个按钮非常接近屏幕的左右边缘。如何在此按钮上添加填充(或左边距和右边距)?
看起来像是:
我看到,当我启动此ViewController
时,按钮和屏幕之间的间距只有一次,当我第二次启动它时,按钮和屏幕之间的间距是正确的。有人能解释我为什么吗?
答案 0 :(得分:0)
您的导航栏的框架看起来像是您意外丢失的间距。其x
位置为0,其宽度与视图控制器的宽度相同。因此没有间距。
我建议在视图控制器的故事板中添加导航栏。在大多数情况下,最好在故事板中解决尽可能多的UI问题,因为它会减少您阅读和维护的代码量。
但是,如果要查找导航栏的正确框架位置和尺寸,可以打印导航栏的框架。然后,当它的框架具有正确的位置时,将它的框架与框架在没有间距的情况下进行比较。然后,您可以相应地调整其x
位置和width
。
答案 1 :(得分:0)
我解决了我的问题。如果我们想要从头开始以编程方式添加导航栏,我们需要在viewDidLoad()
:
// setp 1 = create Navigation Bar
let navbar = UINavigationBar(frame: CGRect(x: 0, y: 0, width: self.view.frame.size.width, height: 59.0))
navbar.delegate = self
//step 2 = create Navigation Item
let item = UINavigationItem()
item.title = "Quick choise"
//step 3 = create BarButtonItem and set position (left, right)
let leftButton = UIBarButtonItem(title: "Back", style: .Done, target: self, action: #selector(CollectionCollectionViewController.goBack(_:)))
item.leftBarButtonItem = leftButton
let rightButton = UIBarButtonItem(barButtonSystemItem: .Add, target: self, action: #selector(CollectionCollectionViewController.addProduct(_:)))
item.rightBarButtonItem = rightButton
//step 4 = add BarButtonItems to Navigation Bar
navbar.items = [item]
//step 5 = add Navigation Bar to view
self.view.addSubview(navbar)