【发布时间】:2015-08-15 01:34:53
【问题描述】:
如何消除导航栏和搜索栏之间的这个小间隙?
这里是自定义导航栏和搜索栏外观的代码:
self.navigationController?.navigationBar.barStyle = .Black
self.navigationController?.navigationBar.barTintColor = UIColor(red: 41/255, green: 128/255, blue: 185/255, alpha: 1.0)
self.navigationController?.navigationBar.tintColor = UIColor.whiteColor()
let navigationTitleFont = UIFont(name: "Avenir", size: 20)!
self.navigationController?.navigationBar.titleTextAttributes = [NSFontAttributeName: navigationTitleFont]
self.navigationController?.navigationBar.translucent = true
self.searchController = ({
let controller = UISearchController(searchResultsController: nil)
controller.searchResultsUpdater = self
controller.hidesNavigationBarDuringPresentation = true
controller.dimsBackgroundDuringPresentation = false
controller.searchBar.sizeToFit()
self.tableView.tableHeaderView = controller.searchBar
self.definesPresentationContext = true
controller.searchBar.returnKeyType = .Search
controller.searchBar.delegate = self
return controller
})()
searchController.searchBar.placeholder = "Search Employees"
for subView in searchController.searchBar.subviews {
for subsubView in subView.subviews {
if let textField = subsubView as? UITextField {
textField.attributedPlaceholder = NSAttributedString(string: "Search Employees", attributes: [NSFontAttributeName: UIFont(name: "Avenir", size: 14)!])
textField.font = UIFont(name: "Avenir", size: 14)
}
}
}
searchController.searchBar.setBackgroundImage(UIImage(named: "blue"), forBarPosition: .Any, barMetrics: .Default)
searchController.searchBar.backgroundColor = UIColor.clearColor()
searchController.searchBar.barTintColor = UIColor(red: 41/255, green: 128/255, blue: 185/255, alpha: 1.0)
searchController.searchBar.tintColor = UIColor.whiteColor()
searchController.searchBar.clipsToBounds = true
【问题讨论】:
-
这个小间隙可以是 UINavigationBar 的边框吗?如果是这样,也许this answer 可以帮助你。
-
不,好像不是边界。我添加了这行代码:self.navigationController?.navigationBar.layer.borderWidth = 0。这什么也没做。
-
UINavigationBar 上的边框不是用 CALayer 做的,而是用 UIImageView 做的。答案,我在第一条评论中放了一个链接,显示了一种摆脱它的方法。
-
@blobbfuesch 我查看了您提供的答案,但似乎没有用。我设置了导航栏的背景图和阴影图,但是没用。
-
你为什么使用
controller.searchBar.sizeToFit()和searchController.searchBar.clipsToBounds = true?我相信您是过度使用样式,并且可以用更少的代码行来实现所需的效果。把所有的外观代码注释掉,把注释行一一取消,看看是什么原因造成的。
标签: ios swift uinavigationbar uisearchbar uisearchcontroller