iOS 11导航栏高度自定义

78

在iOS 11中,sizeThatFits方法不再从UINavigationBar子类中调用。改变UINavigationBar的框架会导致故障和错误的插入。那么,现在有什么想法来自定义Navbar高度呢?


1
即使在 Beta 1 中报告的问题已经被修复,但这仍然是 Beta 2 中存在的问题:sizeThatFits 没有被 UINavigationBar 子类调用。 - ghr
1
在Beta 3中,调用了sizeThatFits,但似乎没有使用自定义高度。这个问题是否在发布说明中提到过? - Alex Medearis
1
对我来说,UINavigationBar被调整大小了,但视图仍然认为它是默认的44像素高度。因此,我的视图在自定义navigationBar下面绘制。附注:扩展边缘为“无”。 - Jeroen Bakker
1
是的,在beta 4中,自定义高度的导航栏仍然存在很多故障,尽管发布说明中声明:“导航栏现在应该看起来正确。(32076094)”。我建议提交一个重复的错误报告。 - karwag
2
UINavigationBar故意不再使用sizeThatFits来确定其大小,因为在iOS 11中具有大标题的动态更改导航栏高度。因此,我不知道除了构建自己的导航栏之外,在iOS 11中如何获得固定高度。我建议您提交增强请求,要求API影响iOS 11+的导航栏高度。 - Jordan H
显示剩余9条评论
11个回答

0
我正在将我的导航栏高度加倍,以便在默认导航控件上方添加一行状态图标,通过子类化UINavigationBar并使用sizeThatFits来覆盖高度。幸运的是,这具有相同的效果,并且更简单,副作用更少。我已经在iOS 8到11上进行了测试。将以下代码放入您的视图控制器中:
- (void)viewDidLoad {
    [super viewDidLoad];
    if (self.navigationController) {
        self.navigationItem.prompt = @" "; // this adds empty space on top
    }
}

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