Ответ 1
Разве навигационная панель не устанавливает максимальную ширину? Я имею в виду, я уверен, вызывается метод sizeThatFits: вашего пользовательского titleView. Возможно, это хорошая отправная точка.
У меня есть customViewView, что мне нужно установить максимальную ширину. Это будет ширина экрана - ширина левого элемента (задний заголовок, кнопка или нуль) - ширина правого элемента (кнопка или ноль). Как я могу это определить?
Благодарю.
Разве навигационная панель не устанавливает максимальную ширину? Я имею в виду, я уверен, вызывается метод sizeThatFits: вашего пользовательского titleView. Возможно, это хорошая отправная точка.
_segmentedControl.frame = CGRectMake(0, 0, CGFLOAT_MAX, _segmentedControl.frame.size.height);
[self.navigationItem setTitleView:_segmentedControl];
Установка CGFLOAT_MAX в качестве ширины для заголовка navigationItem использует максимальное пространство, доступное между левым элементом и правильным элементом.
Установите ширину 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
}