从 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) 更新数据

iOS UISearchController:等到 UISearchController 在取消搜索后被解除

UISearchController 中的搜索图标为截止