2010-08-14 2 views
4

Если я использую UINavigationController для отображения моего UINavigationBar, эта панель намного более тонкая в ландшафтном режиме, чем в портретном режиме.UINavigationBar высотно-ландшафтный режим

Все до сих пор, так как я хочу этого поведения, но у меня есть одно представление, которое не обрабатывается UINavigationController, поэтому я просто перетащил UINavigationBar из Interface Builder в представление, но у этого всегда есть одно и то же и я не вижу способа сообщить UINavigationBar, что он должен изменить размер.

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

ответ

10

Вы можете изменить размер панели навигации в методе layoutSubviews вашего UIView, например, так:

- (void)layoutSubviews { 
    [super layoutSubviews]; 

    // Let navBar tell us what height it would prefer at the current orientation 
    CGFloat navBarHeight = [navBar sizeThatFits:self.bounds.size].height; 

    // Resize navBar 
    navBar.frame = CGRectMake(0, 0, self.bounds.size.width, navBarHeight); 
} 
+0

Это помещает Navbar в нижней части экрана, не следует, что быть CGRectMake (0, 0, self.bounds.size.width, navBarHeight)? – marimba

+0

Я хотел его внизу, когда написал этот код, но, как правило, да. –

+0

Это не работает для меня. Я делаю все в коде (не в nib), и я не мог получить его работу. Какие-либо предложения? –

Смежные вопросы