弄清楚这里发生了什么。UINavigationController 会自动调整纵向导航栏的大小,据我所知,没有内置方法可以防止这种情况发生。但是,在这篇文章(如何防止在 Landscape 上自动调整 UINavigationBar 大小)的帮助下,我能够让它按照我想要的方式工作。我的代码与链接帖子中的代码略有不同。我用了:
@implementation UINavigationBar (CustomHeight)
- (CGSize)sizeThatFits:(CGSize)size
{
// Need to know the width of the window
CGRect bounds = self.window.bounds;
// Sometimes height and width are turned around. Take the largest of height and width as the real width.
int width = (bounds.size.width > bounds.size.height) ? bounds.size.width : bounds.size.height;
// Make sure that the
CGSize newSize = CGSizeMake(width, 44);
return newSize;
}
我不确定是否有更好的方法来获得真正的宽度 - 以上内容很笨重,但对我有用,因为我的应用程序只在横向运行。我更担心的是,Apple 在其 UINavigationBar 文档中说您不应该直接调整框架。但我想我不是直接这样做的。大概内部绘图方法会调用这个方法并做他们的事情。
无论如何,这对我有用。希望它可以帮助别人。