导航栏高度和横屏模式

4
如果我使用UINavigationController来显示我的UINavigationBar,那么在横屏模式下,这个导航栏会比竖屏模式下更窄。到目前为止一切都很好,因为我想要这种行为,但是我有一个视图没有被UINavigationController处理,所以我只是从Interface Builder中拖放了一个UINavigationBar到视图中,但这个导航栏始终保持相同的大小,我看不到任何方法告诉UINavigationBar它应该调整大小。有人知道如何实现吗?
1个回答

10

你可以在UIView的layoutSubviews方法中调整导航栏的大小,代码如下:

- (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);
}

那会将导航栏放置在屏幕底部,不应该是CGRectMake(0, 0, self.bounds.size.width, navBarHeight)吗? - marimba
我在编写代码时希望它出现在底部,但通常情况下不是这样。 - Hilton Campbell
这对我不起作用。我正在使用代码(而不是nib)做所有事情,但我无法让他的工作正常。有什么建议吗? - Borut Tomazin
1
@BorutTomazin 这个示例是针对UIView子类的,我猜测你正在使用它在一个UIViewController子类中,这种情况下你应该使用viewDidLayoutSubviews。 - Ben Clayton

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接