【发布时间】:2017-01-13 13:54:11
【问题描述】:
约束可以分配给手动添加到视图的UINavigationBar。
但是当 UINavigationBar 被添加到视图中并且视图嵌入到导航控制器中时,我无法向其添加约束。
我的目标是增加 UINavigationBar
的高度【问题讨论】:
标签: ios swift uinavigationcontroller uinavigationbar uinavigationitem
约束可以分配给手动添加到视图的UINavigationBar。
但是当 UINavigationBar 被添加到视图中并且视图嵌入到导航控制器中时,我无法向其添加约束。
我的目标是增加 UINavigationBar
的高度【问题讨论】:
标签: ios swift uinavigationcontroller uinavigationbar uinavigationitem
UINavigationBar 不允许为自身分配约束。更改高度的唯一简单方法是在 prompt 属性中添加一个空格。
增加UINavigationBar的高度有两个步骤:
注意:该特定导航控制器下的所有视图都将具有新高度
代码片段:
class ModifiedNavBar: UINavigationBar {
override func sizeThatFits(size: CGSize) -> CGSize {
let screenWidth = UIScreen.mainScreen().bounds.width
let newSize:CGSize = CGSizeMake(screenWidth, 60)
return newSize
}
}
注意:上述步骤会增加 NavBar 的高度,但不会为您提供完整的自定义选项。添加视图可以让您完全控制它。
代码片段:
class ViewController: UIViewController {
/*** UINavigationItem Outlet ***/
@IBOutlet weak var navbar: UINavigationItem!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
super.viewDidLoad()
let view = UIView(frame: CGRectMake(0, 0, UIScreen.mainScreen().bounds.width, 90))
let label = UILabel(frame: CGRectMake(0, 0, UIScreen.mainScreen().bounds.width, 20))
let label2 = UILabel(frame: CGRectMake(0, 20, UIScreen.mainScreen().bounds.width, 20))
/*** First Label ***/
label.text = "Hello"
label.textAlignment = NSTextAlignment.Left
view.addSubview(label)
/***Second Label ***/
label2.text = "Hello2"
label2.textAlignment = NSTextAlignment.Left
view.addSubview(label2)
self.navbar.titleView = view
}
注意:如果将 prompt 添加到任何 UINavigationItem 对象,NavBar 的大小将会增加
【讨论】: