调整UISearchController的searchBar的插入

时间:2019-05-19 14:15:08

标签: ios swift uikit uisearchcontroller

我正在尝试一些设计,我希望所有子视图的边距都等于25px。 UISearchController的{​​{1}}开箱即用,两侧都有16px的填充。我是否必须从头开始编写搜索栏文本字段,或者是否有任何方式(未记录,模糊或其他方式)来完成使本机栏偏移我的口味?

enter image description here

2 个答案:

答案 0 :(得分:1)

如果您使用的是UISearchController,则可以这样设置searchBar的边距(假设searchBarUISearchController实例):

let directionalMargins = NSDirectionalEdgeInsets(top: 0, leading: 25, bottom: 0, trailing: 25)
searchController.searchBar.directionalLayoutMargins = directionalMargins

答案 1 :(得分:0)

编辑:另一种解决方案更好。

哇,这是一个棘手的问题!我终于找到了办法。

class CustomSearchBar: UISearchBar {

    override var alignmentRectInsets: UIEdgeInsets {
        return UIEdgeInsets(top: 0, left: -17, bottom: 0, right: -17)
    }
}

class CustomSearchController: UISearchController {

    lazy var customSearchBar = CustomSearchBar()

    override var searchBar: UISearchBar {
        get {
            return customSearchBar
        }
        set { }
    }
}

然后在navigationItem.searchController中使用CustomSearchController。 alignmentRectInsets为负数,默认情况下继承自navigationItem -8。使用-17会使它偏离边缘25像素。