Подтвердить что ты не робот

Установите высоту UINavigationBar, как в приложении для календаря iOS 7

Мне нужен NavigationBar, как в календаре в iOS 7.

Я заметил, что у NavigationBar нет размытости.

Calendar app iOS7

при возврате из одного подробного представления. Это просто "главный" NavigationBar, который является "нормальным".

Calendar app iOS7

Кто-нибудь знает, как это сделать?

Я попытался сделать это:

[self.navigationController.navigationBar setFrame:CGRectMake(0, 0, 320, 88)];

Но это переместит название и кнопки вниз на 44 пикселя.

У меня есть другая идея добавить еще одну панель навигации под navigationController.navigationBar, но затем у меня есть строка под первой панелью навигации. Кто-нибудь знает, как удалить это?

Спасибо!

4b9b3361

Ответ 1

Я исправил это!

Я поместил другую навигационную панель под "основной" навигационной панелью. Удалена "основная" линия тени NavigationBars.

Извлеките полупрозрачный слой NavigationBar и установите цвет фона на 97% белого. (это стандарт). Если полупрозрачный - это ДА, это выглядело бы странно, когда контент позади.

[self.navigationController.navigationBar setTranslucent:NO];
[self.navigationController.navigationBar setBarTintColor:[UIColor colorWithWhite:0.97 alpha:1]];
[NavigationBarExtension setTranslucent:NO];
[NavigationBarExtension setBarTintColor:[UIColor colorWithWhite:0.97 alpha:1]];

Код для удаления строки (сделайте это в viewWillAppear: потому что если вы нажмете другой контроллер представления, строка должна вернуться)

- (void)viewWillAppear:(BOOL)animated {
    for (UIView *view in self.navigationController.navigationBar.subviews) {
        if ([view isKindOfClass:NSClassFromString(@"_UINavigationBarBackground")]) {
            for (UIView *view2 in view.subviews) {
                if ([view2 isKindOfClass:[UIImageView class]] && view2.frame.size.height < 1) {
                    [view2 setHidden:YES];
                    break;
                }
            }
        }
    }
}

Код для отображения строки при нажатии другого контроллера вида:

- (void)viewWillAppear:(BOOL)animated {
    for (UIView *view in self.navigationController.navigationBar.subviews) {
        if ([view isKindOfClass:NSClassFromString(@"_UINavigationBarBackground")]) {
            for (UIView *view2 in view.subviews) {
                if ([view2 isKindOfClass:[UIImageView class]] && view2.frame.size.height < 1) {
                    [view2 setHidden:NO];
                    break;
                }
            }
        }
    }
}