Xcode 12 更改导航栏大小 self.navigationController

问题描述 投票:0回答:1

它用于网络视图,我希望导航栏位于顶部,但我希望它非常小。但无论我放什么值都不起作用:(

例如,使用此代码,我将导航栏中的文本显示为红色

let textAttributes = [NSAttributedString.Key.foregroundColor:UIColor.red]
        navigationController?.navigationBar.titleTextAttributes = textAttributes

但是尝试改变高度,比如说 8、80 甚至 800 是行不通的:(

navigationController!.navigationBar.frame = CGRect(x: 0, y: 0, width: self.view.frame.size.width, height: 80)

有更好的方法吗?

xcode uinavigationbar
1个回答
1
投票

其实iOS 11之后苹果就不允许我们自定义导航栏的高度了。您可以使用自定义导航栏来做到这一点

// Before iOS 11
class MyNavigationBar: UINavigationBar {

  override func sizeThatFits(_ size: CGSize) -> CGSize {
    return CGSize(width: UIScreen.main.bounds.width, height: 80)
  }
}

或创建自定义导航控制器

class MyNavigationController: UINavigationController {

  override func viewDidLayoutSubviews() {
    super.viewDidLayoutSubviews()
    navigationBar.frame = CGRect(x: 0, y: 0, width: view.frame.width, height: 80)
  }
}

社区错误报告

UINavigationBar 的子视图不服从视图框架高度

sizeThatFits 不起作用

#iOS 11 Xcode 9 导航栏高度不变


奖金

在开发者论坛上查看 gianfilippoci 的 answer

© www.soinside.com 2019 - 2024. All rights reserved.