获取uinavigationItem.titleView的最大宽度?

时间:2012-05-23 21:30:33

标签: ios uinavigationbar frame uinavigationitem titlebar

我有一个自定义titleView,我需要设置最大宽度。这将是屏幕宽度 - 左项目的宽度(后标题,按钮或零) - 右项目的宽度(按钮或零)。我该如何确定?

感谢。

3 个答案:

答案 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
}