【问题标题】:Search bar not aligned next to back button in navigation bar搜索栏未与导航栏中的后退按钮对齐
【发布时间】:2018-07-30 01:10:36
【问题描述】:

我使用自定义导航控制器类来删除导航栏中的后退按钮,具有以下内容:

class CustomNavigationController: UINavigationController, UINavigationControllerDelegate {

    override func viewDidLoad() {
        super.viewDidLoad()

        self.delegate = self
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }


    func navigationController(_ navigationController: UINavigationController, willShow viewController: UIViewController, animated: Bool) {

        viewController.navigationItem.backBarButtonItem = UIBarButtonItem(title: " ", style: .plain, target: nil, action: nil)
    }

}

在我的一个 VC 中,我还在导航栏中添加了一个搜索控制器,其中包含以下内容:

private func configureSearchController() {
        self.searchController = UISearchController(searchResultsController: nil)
        self.searchController.searchResultsUpdater = self
        self.searchController.delegate = self
        self.searchController.searchBar.delegate = self

        self.searchController.hidesNavigationBarDuringPresentation = false
        self.searchController.dimsBackgroundDuringPresentation = true

        self.navigationItem.titleView = searchController.searchBar
        self.definesPresentationContext = true
    }

但是,搜索栏似乎仍然被标题所在的一些空白区域所抵消。我想搜索栏应该与后退按钮对齐,但是有后退按钮、空白标题的空格,然后是搜索栏。

我怎样才能让搜索栏与后退按钮对齐而不是隔开,因为空白标题似乎有一些空间。另外,作为一个注释,点击那个空白空间会让我回到以前的 VC,虽然那里没有实际的标题。

编辑:

视图层次结构,看起来后退按钮容器视图本身占用了大量空间

【问题讨论】:

  • 你有没有在 swift 中检查过这个answer 或它下面的那个
  • @zombie 是的,还是有同样的问题
  • 那么我建议检查布局以查看发生了什么,因此请转到顶部菜单 -> 调试 -> 查看调试 -> 捕获视图层次结构
  • @zombie 哇我其实不知道这个功能,但我也不知道我在寻找什么来解决我的问题。看起来 UIBackButtonContainerView 占用了空间
  • 这意味着后退按钮仍然占用很大空间。尝试检查我在上面发布的问题的其余答案

标签: swift uinavigationcontroller uinavigationbar uisearchcontroller


【解决方案1】:

尝试在viewDidLoad 中添加此内容

let backButton = UIBarButtonItem(title: "", style: .plain, target: nil, action: nil)
backButton.setBackButtonTitlePositionAdjustment(UIOffsetMake(-1000, -1000), for: .default)
navigationItem.backBarButtonItem = backButton

【讨论】:

  • 我的导航控制器或VC的viewDidLoad?
  • 在要隐藏后退按钮文本的视图控制器中(带有搜索框的那个)
猜你喜欢
  • 2016-06-12
  • 1970-01-01
  • 2012-06-08
  • 1970-01-01
  • 2014-03-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-12
相关资源
最近更新 更多