我有一个自定义的titleView,我需要为其设置最大宽度。那将是屏幕宽度 - 左侧项目的宽度(后标题、按钮或 nil) - 右侧项目的宽度(按钮或 nil)。我怎样才能确定这一点?
谢谢。
我有一个自定义的titleView,我需要为其设置最大宽度。那将是屏幕宽度 - 左侧项目的宽度(后标题、按钮或 nil) - 右侧项目的宽度(按钮或 nil)。我怎样才能确定这一点?
谢谢。
_segmentedControl.frame = CGRectMake(0, 0, CGFLOAT_MAX, _segmentedControl.frame.size.height);
[self.navigationItem setTitleView:_segmentedControl];
将 CGFLOAT_MAX 设置为 navigationItem 标题视图的宽度会使用左侧项目和右侧项目之间的最大可用空间。
导航栏不会自动将宽度设置为最大值吗?我的意思是,我确定你的自定义 titleView 的 sizeThatFits: 方法被调用了。也许这是一个很好的起点。
将 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
}