如何让 navigationItem.searchController 的 searchBar 使用屏幕的全宽

Posted

技术标签:

【中文标题】如何让 navigationItem.searchController 的 searchBar 使用屏幕的全宽【英文标题】:How to make navigationItem.searchController's searchBar use the full width of the screen 【发布时间】:2019-02-04 16:05:54 【问题描述】:

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))
    

如果我尝试将 left 和 right 设置为 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】:

你试过了吗?

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

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

【讨论】:

它不起作用......感谢你,我越来越近了,我可以将约束应用于 UITextField 子视图现在我有另一个问题。当我开始编辑时,会出现取消按钮,并且搜索栏文本字段不会调整大小。

以上是关于如何让 navigationItem.searchController 的 searchBar 使用屏幕的全宽的主要内容,如果未能解决你的问题,请参考以下文章

Jfreechart柱状图如何让变成纯色

android中如何让文字环绕图片

如何让GridView 标题居中

请教如何让UIActivityIndicatorView永远居中

如何让ActionBar标题居中

EBS如何让从值集不显示