iOS 11 UINavigationBar 搞砸了

标签 ios objective-c xcode ios11

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

enter image description here 查看空白区域。

我试过了

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];
}

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

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

最佳答案

对导航栏进行子类化对我有用。

- (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 11 UINavigationBar 搞砸了,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46523085/

相关文章:

objective-c - 需要在 Xcode 中包含 Accelerate 框架

objective-c - 如何制作可滚动的 TabBar ...?

ios - 在设备上启动应用程序时出错

iphone - 如何编写代码以停止多个音频文件 swift 移动?

ios - 将项目集成到单个项目中

iphone - iOS检查 uislider 值是否增加或减少。

iphone - 硬盘重新格式化 : Code Sign error: The identity 'iPhone Developer' doesn't match any valid certificate/private key pair in the default keychain

ios - iOS 中的正则表达式

XCode:CoreData.Framework 带有 id 的奇怪行为

ios - tableview cell.imageview 没有动画