如何让 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 使用屏幕的全宽的主要内容,如果未能解决你的问题,请参考以下文章