12

我有一个自定义的titleView,我需要为其设置最大宽度。那将是屏幕宽度 - 左侧项目的宽度(后标题、按钮或 nil) - 右侧项目的宽度(按钮或 nil)。我怎样才能确定这一点?

谢谢。

4

3 回答 3

6
_segmentedControl.frame = CGRectMake(0, 0, CGFLOAT_MAX, _segmentedControl.frame.size.height);

[self.navigationItem setTitleView:_segmentedControl];

将 CGFLOAT_MAX 设置为 navigationItem 标题视图的宽度会使用左侧项目和右侧项目之间的最大可用空间。

于 2016-03-24T15:28:24.020 回答
2

导航栏不会自动将宽度设置为最大值吗?我的意思是,我确定你的自定义 titleView 的 sizeThatFits: 方法被调用了。也许这是一个很好的起点。

于 2012-05-23T21:33:27.697 回答
-1

将 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
}
于 2017-02-02T10:54:07.497 回答