【问题标题】:iOS 11 UINavigation Bar is messed upiOS 11 导航栏搞砸了
【发布时间】:2017-10-02 09:39:57
【问题描述】:

iOS 11 导航栏的标题视图和栏按钮项目不居中。 背景图像的高度也没有变化,也没有完整显示。条形高度为74。

查看空白区域。

我试过了

if(@available(iOS 11,*)){
    _homeNavigationBar.prefersLargeTitles = NO;
    _homeNavigationItem.largeTitleDisplayMode = UINavigationItemLargeTitleDisplayModeNever;
    [_homeNavigationBar setBarTintColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@"navbarBg.png"]]];
}
else{
    [_homeNavigationBar setBackgroundImage:[UIImage imageNamed:@"navbarBg.png"] forBarMetrics:UIBarMetricsDefault];
}

但我仍然无法将标题和栏按钮项居中。

知道如何解决这个问题吗?请告诉我。谢谢

【问题讨论】:

标签: ios objective-c xcode ios11


【解决方案1】:

子类化导航栏对我有用。

- (void)layoutSubviews {
[super layoutSubviews];

for (UIView *view in self.subviews) {
    if([NSStringFromClass([view class]) containsString:@"Background"]) {
        view.frame = self.bounds;
    }
    else if ([NSStringFromClass([view class]) containsString:@"ContentView"]) {
        CGRect frame = view.frame;
        frame.origin.y = 25;
        view.frame = frame;
    }
 }
}

【讨论】:

  • 这是不正确。在以前的 iOS 版本中,状态栏有时高 20。 (也可能是 40)。你永远不应该假设一个固定的高度。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多