【发布时间】:2018-09-02 21:18:09
【问题描述】:
我正在尝试创建 UISearchController 并将其搜索栏放入容器视图中。 searchView 是出口。这是我的代码:
let searchController = UISearchController(searchResultsController: nil)
self.searchController = searchController
let searchBarBackground = UIImage.roundedImage(UIImage.image(with: #colorLiteral(red: 0.5568627451, green: 0.5568627451, blue: 0.5764705882, alpha: 0.2), size: size), cornerRadius: cornerRadius)
searchController.searchBar.setSearchFieldBackgroundImage(searchBarBackground, for: .normal)
searchController.searchBar.searchTextPositionAdjustment = UIOffsetMake(8.0, 0.0)
searchController.searchBar.searchBarStyle = .minimal
searchController.searchBar.barStyle = .black
searchController.searchBar.delegate = self
searchView.addSubview(searchController.searchBar)
我不知道如何让搜索栏保留主视图的边距。当我尝试向容器视图添加约束并将搜索栏添加为子视图时,搜索栏不遵守尾随约束。
即使手动设置搜索栏框架等于viewDidLayoutSubviews 中的内容视图边界也无济于事。仅当我将前导和尾随约束设置为 0 而不考虑超级视图边距时,它看起来才正常。但它的边距只有 8pt,我需要更多。
我怎样才能实现它?也许可以更改搜索栏的默认边距?谢谢。
如果需要,来自 IB 的屏幕截图(它只是对值 -8 的边距进行限制以补偿搜索栏内部边距):
【问题讨论】:
-
你能展示你尝试过的约束吗?
-
@RakeshaShastri 已添加。
-
为什么前导和尾随常量都是负数?前导不应该是正数,尾随是负数吗?
-
不,约束有效。内容视图需要框架,但在iOS 11的UISearchController中使用时,搜索栏只是拉伸到屏幕的所有宽度。在较低版本中没有这样的问题。
标签: ios swift uikit uisearchbar uisearchcontroller