Получить максимальную ширину uinavigationItem.titleView?

У меня есть customViewView, что мне нужно установить максимальную ширину. Это будет ширина экрана - ширина левого элемента (задний заголовок, кнопка или нуль) - ширина правого элемента (кнопка или ноль). Как я могу это определить?

Благодарю.

Ответ 1

Разве навигационная панель не устанавливает максимальную ширину? Я имею в виду, я уверен, вызывается метод sizeThatFits: вашего пользовательского titleView. Возможно, это хорошая отправная точка.

Ответ 2

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

[self.navigationItem setTitleView:_segmentedControl];

Установка CGFLOAT_MAX в качестве ширины для заголовка navigationItem использует максимальное пространство, доступное между левым элементом и правильным элементом.

Ответ 3

Установите ширину 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
}