我正试图在我的navBar上添加一个如下所示的navBar:

这里的想法是“抓取.”是一个小titleView。但是,我当前的实现将导致文本“获取.”。在较低的一边,如:

我实现了大标题,这样我就可以在navBar上得到两个“行”,否则就是“获取.”这个词。将被隐藏在segmentedControl后面。
代码:
let segmentedControl: UISegmentedControl = {
let items = ["Now","In 15 mins", "In 1 hour"]
let sc = UISegmentedControl(items: items)
sc.selectedSegmentIndex = 0
return sc
}()
override func viewDidLoad() {
super.viewDidLoad()
navigationItem.backBarButtonItem?.title = "Back"
navigationItem.largeTitleDisplayMode = .automatic
navigationItem.titleView = segmentedControl
}有人有什么建议吗?
发布于 2018-04-15 13:03:44
您可以创建一个customView,它保存您希望在navigation bar中显示的所有views,并将该视图设置为titleView,如下所示,
let segmentedControl: UISegmentedControl = {
let items = ["Now","In 15 mins", "In 1 hour"]
let sc = UISegmentedControl(items: items)
sc.selectedSegmentIndex = 0
return sc
}()
let fetchingLabel: UILabel = {
let label = UILabel(frame: .zero)
label.text = "Fetching..."
return label
}()在viewDidLoad中
let customView = UIView(frame: CGRect(x: 0, y: 0, width: self.view.frame.width, height: 250))
customView.addSubview(segmentedControl)
customView.addSubview(fetchingLabel)
fetchingLabel.frame = CGRect(x: 150, y: 0, width: self.view.frame.width, height: 60)
segmentedControl.frame = CGRect(x: 60, y: 50, width: self.view.frame.width * 0.75, height: 30)
navigationController?.navigationBar.prefersLargeTitles = true
navigationItem.largeTitleDisplayMode = .automatic
navigationItem.titleView = customView这应该会给你以下的结果。你可以利用这些价值观来做你想做的事。

https://stackoverflow.com/questions/49841919
复制相似问题