如何使NavigationItem.searchController的searchBar使用屏幕的整个宽度

时间:2019-02-04 16:05:55

标签: ios uisearchbar uisearchcontroller uinavigationitem

在iOS 11和12上,我想不出一种方法来使searchBar使用屏幕的整个宽度。

navigationItem.searchController = searchController

我可以使用以下方法增加更多的保证金:

    let sb = searchController.searchBar
    let selector = #selector(setter: UIScrollView.contentInset)
    if sb.responds(to: selector) {
       sb.perform(selector, with: UIEdgeInsets(top: 5, left: 0, bottom: 5, right: 35))
    }

如果我尝试将左右设置为0 ...,它将仅使用默认布局。

编辑:

拉近距离:

    for tf in sb.subviews.first!.subviews where tf is UITextField {      
      tf.translatesAutoresizingMaskIntoConstraints = false
      tf.widthAnchor.constraint(equalToConstant: width).isActive = true
      tf.layoutIfNeeded()
    }

现在,我正在尝试找出一种应用约束的方法,以便在文本字段处于活动状态时,它将为取消按钮(UINavigationButton)腾出空间

1 个答案:

答案 0 :(得分:0)

您尝试过吗?

        let width = UIScreen.main.bounds.size.width
        searchBar.translatesAutoresizingMaskIntoConstraints = false
        searchBar.widthAnchor.constraint(equalToConstant: width).isActive = true

搜索栏的宽度将始终等于设备屏幕的整个宽度。