如何在 swift 中拉伸标题视图?

How to stretch title view in swift?

我为 UINavigationItem 创建了自定义标题视图。
我想要自定义视图拉伸到右填充。
我能做什么??

我尝试将 rightBarButtonItem 设置为 nil。
不过好像没办法。
并且不要拉伸到左后退按钮区域。

override func viewDidLoad() {
    super.viewDidLoad()

    let searchBar = CustomSearchBar()
    searchBar.autoresizingMask = .flexibleWidth
    searchBar.frame = CGRect(x: 0, y: 0, width: 400, height: 30)

    self.navigationItem.titleView = searchBar

    self.navigationItem.rightBarButtonItem = UIBarButtonItem()
}

查看我的结果。我要红色区域

https://imgur.com/a/dar3cMN

在您的 CustomSearchBar 中尝试以下操作 class:

override var intrinsicContentSize: CGSize {
    return UILayoutFittingExpandedSize
}
let searchBar = CustomSearchBar()

searchBar.translatesAutoresizingMaskIntoConstraints = false

self.navigationItem.titleView = searchBar

searchBar.heightAnchor.constraint(equalToConstant: 30.0).isActive = true

searchBar.rightAnchor.constraint(equalTo: self.navigationController!.navigationBar.rightAnchor).isActive = true

searchBar.leftAnchor.constraint(equalTo: self.navigationController!.navigationBar.centerXAnchor).isActive = true

以上代码对我有用。如果不需要 center 中的栏,可以删除 left anchor。我还将 translatesAutoresizingMaskIntoConstraints 设置为 false,我希望这有效。