2014-10-15 4 views
8

Я использую панель рассказов, чтобы создать панель навигации.Скрыть строку состояния и увеличить высоту UINavigationBar

Мое требование - скрыть строку состояния и увеличить высоту навигационной панели. Когда я скрываю строку состояния, панель навигации прилипает к вершине, а высота - 44 px. Мне нужна высота панели навигации, равная 64 px (высота строки состояния 44px +). Есть какой-либо способ сделать это?

С строке состояния

enter image description here без строки состояния Without Status bar

+0

Здравствуйте, проверьте мой отредактированный ответ. он работает нормально. –

ответ

7

Для начала, вы скрыть ваш statusBar, выполнив следующие действия:

Во-первых, поместите этот код в viewWillAppear :

[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationFade]; 

Во-вторых, установить файл info.plist как ниже изображение показывает:

enter image description here

Далее, вы можете сделать Category из UINavigationBar и в нем установить высоту navigaionBar.

Objective-C

в файле .h

@interface UINavigationBar (Custom) 
- (CGSize)sizeThatFits:(CGSize)size ; 

и .m файл

@implementation UINavigationBar (Custom) 

- (CGSize)sizeThatFits:(CGSize)size { 
    CGFloat width = [UIScreen mainScreen].bounds.size.width; 
    CGSize newSize = CGSizeMake(width, 100); 
    return newSize; 
} 

Swift

extension UINavigationBar { 
    public override func sizeThatFits(size: CGSize) -> CGSize { 
     let width = UIScreen.mainScreen().bounds.width 
     let newSize = CGSize(width: width, height: 64) 
     return newSize 
    } 
} 
+0

спасибо. Я думал об этой идее. но мне нужно отрегулировать положение y во всех подвидях во всем контроллере просмотра до 64 пикселей? –

+0

Not of allView, только Navigation Subview. –

+0

где я должен выделить представление. in viewdidload не работает –