我正在组建一个应用程序,其中一些视图在常规UIViewControllers中并使用自己的UINavigationBar,而其他视图将成为UINavigationController内导航层次结构的一部分,并使用其UINavigationBar。
问题是我看到的实际UINavigationBars在这两种情况下是不同的。使用UINavigationController的导航栏中的那些似乎不自然地短。下面是一些图片,展示了我在Interface Builder中看到的与我在运行时看到的内容。
我无法弄清楚我在这里做错了什么。为什么导航栏的高度不同?我怎样才能使它们一样?
答案 0 :(得分:2)
我真的相信你正在混合两种不同的功能。 UINaviationbar和UIToolbar。这是苹果的人类指导方针。查看导航栏文档的顶部
我将尝试查看是否可以找到有关其尺寸的文档。这是一个。我相信有更好的可用
答案 1 :(得分:0)
弄清楚这里发生了什么。 UINavigationController自动纵向调整导航栏的大小,据我所知,没有内置的方法可以防止这种情况发生。但是,在这篇文章(How to prevent autoresizing UINavigationBar on Landscape)的帮助下,我能够按照我想要的方式工作。我的代码与链接帖子中的代码略有不同。我用过:
@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文档中说你不应该直接调整框架。但我想我不是直接这样做的;据推测,内部绘图方法会调用此方法并执行它们的操作。
无论如何,这对我有用。希望它可以帮助别人。