Я нашел два решения:
1) Как было предложен neural5torm, вы можете добавить сегментированное управление к UIView с тем же цветом фона панели навигации
Вы можете удалить сверхтонкую UINavigationBar в этом случае :
for (UIView *view in self.navigationController.navigationBar.subviews)
{
for (UIView *view2 in view.subviews)
{
if ([view2 isKindOfClass:[UIImageView class]])
{
[view2 removeFromSuperview];
}
}
}
Это нормально для не полупрозрачного панели навигации.
Если вы хотите полупрозрачный панель навигации:
2) Подкласс UINavigationBar создать более высокий бар переопределив sizeThatFits
- (CGSize)sizeThatFits:(CGSize)size
{
size.width = self.frame.size.width;
size.height = your height (probably 88.0f);
return size;
}
Чтобы использовать пользовательскую панель навигации:
UINavigationController *navController = [[UINavigationController alloc] initWithNavigationBarClass:[YouNavigationBar class] toolbarClass:nil];
[navController setViewControllers:@[viewController]];
Элементы названия и кнопки будут внизу.Отрегулируйте их вертикальное положение (в инициализации вашей пользовательской панели навигации или через внешний вид прокси)
// Title view
[self setTitleVerticalPositionAdjustment:-dy forBarMetrics:UIBarMetricsDefault];
// Button item as icon/image
[[UIBarButtonItem appearanceWhenContainedIn:[YourCustomNavigationBar class], nil] setBackgroundVerticalPositionAdjustment:-dy forBarMetrics:UIBarMetricsDefault];
Посмотрите на ссылках класса UIBarButtonItem, есть также setTitlePositionAdjustment
и другие методы для кнопки возврата
Когда ты создать сегментированное управление, добавьте его в панель навигации
[self.navigationController.navigationBar addSubview:segmentedControl];
Сегментное управление ш плохо быть наверху. Отрегулируйте вертикальное положение с помощью переопределения didAddSubview
в пользовательской панели навигации
- (void)didAddSubview:(UIView *)subview
{
[super didAddSubview:subview];
if ([subview isKindOfClass:[UISegmentedControl class]])
{
CGRect frame = subview.frame;
frame.origin.y += your extra height (probably 44.0f);
subview.frame = frame;
}
}
Как я уже писал, я попытался добавить сегментированный контроль как вид заголовка и с помощью панели навигации незамедлительной установить название, однако кнопки выключены затем. – sangi93