我有一个自定义titleView,我需要设置最大宽度。这将是屏幕宽度 - 左项目的宽度(后标题,按钮或零) - 右项目的宽度(按钮或零)。我该如何确定?
感谢。
答案 0 :(得分:6)
_segmentedControl.frame = CGRectMake(0, 0, CGFLOAT_MAX, _segmentedControl.frame.size.height);
[self.navigationItem setTitleView:_segmentedControl];
将CGFLOAT_MAX设置为navigationItem标题视图的宽度,使用左侧项目和右侧项目之间的最大可用空间。
答案 1 :(得分:4)
导航栏是否自动将宽度设置为最大值?我的意思是,我确定调用了自定义titleView的sizeThatFits:方法。也许这是一个很好的起点。
答案 2 :(得分:0)
将titleView宽度设置为超出最大屏幕宽度所需的宽度,导航栏调整宽度以适合屏幕。如果有左或右UIBarButtonItem,则titleView会相对于它们调整大小。尝试旋转屏幕,亲眼看看。
func setTitleView(){
guard let navFrame = navigationController?.navigationBar.frame else{
return
}
let myView = UIView(frame: CGRect(x: 0, y: 0, width: navFrame.width*3, height: navFrame.height))
myView.backgroundColor = UIColor.orange
self.navigationItem.titleView = myView
}