从 UISearchController 搜索栏快速删除黑色边框
Posted
技术标签:
【中文标题】从 UISearchController 搜索栏快速删除黑色边框【英文标题】:remove black border from UISearchController search bar swift 【发布时间】:2016-07-31 03:49:09 【问题描述】:我的 tableView 中有一个 UISearchController。另请注意,顶部有一个导航项。 我的问题是加载页面时顶部和底部都有黑色边框,但是当我单击搜索栏时它不存在。
页面加载时的搜索栏(黑色边框):
点击搜索栏后(无黑边):
下面是相关代码:
let searchController = UISearchController(searchResultsController: nil)
在 viewDidLoad 中:
searchController.searchBar.barTintColor = UIColor.redColor()
searchController.searchBar.tintColor = UIColor.whiteColor()
我遵循了几个类似的问题,并在viewDidLoad()
中的上述行之后进行了以下更改:
1) searchController.searchBar.backgroundImage = UIImage()
2)searchController.searchBar.searchBarStyle = UISearchBarStyle.Minimal
3)searchController.searchBar.layer.borderColor = UIColor.clearColor().CGColor
4)
searchBar.layer.borderWidth = 1
searchBar.layer.borderColor = UIColor.whiteColor().CGColor
没有工作。这是我使用代码的顺序的问题,还是我如何摆脱这些行?
【问题讨论】:
【参考方案1】:经过大量搜索后修复了此问题。我是这样做的。在viewDidLoad
中,添加了以下几行:
self.searchController.searchBar.translucent = false
self.searchController.searchBar.backgroundImage = UIImage()
self.searchController.searchBar.barTintColor = UIColor.redColor()
self.searchController.searchBar.tintColor = UIColor.whiteColor()
在didFinishLaunchingWithOptions
的app.delegate文件中添加以下代码:
let backgroundColor = UIColor.redColor()
let foregroundColor = UIColor.whiteColor()
UIApplication.sharedApplication().statusBarStyle = .LightContent
UINavigationBar.appearance().shadowImage = UIImage()
UINavigationBar.appearance().setBackgroundImage(backgroundColor.toImage(), forBarMetrics: UIBarMetrics.Default)
UINavigationBar.appearance().tintColor = foregroundColor
UINavigationBar.appearance().titleTextAttributes = [NSForegroundColorAttributeName: foregroundColor]
app.delegate 文件上也需要这个扩展名(放在类外)
extension UIColor
func toImage() -> UIImage
let rect = CGRectMake(0, 0, 1, 1)
UIGraphicsBeginImageContextWithOptions(rect.size, true, 0)
self.setFill()
UIRectFill(rect)
let image = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return image
(感谢 Noel 提供来自 this answer 的扩展名)
最后,想要的结果:
【讨论】:
【参考方案2】:我认为这是您需要为其移除边框的导航栏。
How to hide ios7 UINavigationBar 1px bottom line
【讨论】:
你的链接有这个答案:***.com/a/24974907/4858605 可能很有用,虽然我无法测试出来。【参考方案3】:适用于 iOS 13 / Swift 5;下面这行就是诀窍:
UISearchBar.setBackgroundImage(UIImage(), for: .any, barMetrics: .default)
干杯!
【讨论】:
以上是关于从 UISearchController 搜索栏快速删除黑色边框的主要内容,如果未能解决你的问题,请参考以下文章
从 UISearchController Swift 传递更多数据
Swift - 通过 UISearchController [解析] 搜索时关注和取消关注用户的问题
以编程方式重置 UISearchController 中的搜索查询字符串
如何从 searchResultsController (UISearchController) 更新数据