【问题标题】:How to get rid of border of UISearchBar?如何摆脱 UISearchBar 的边框?
【发布时间】:2017-04-16 03:07:10
【问题描述】:

问题

我在 UIView 中嵌入了一个 UISearchController。搜索栏占据了整个视图的大小。但是,我不知道如何摆脱这个灰色边框。我希望搜索栏占据视图的整个大小,而没有那个讨厌的灰色边框。我怎样才能摆脱它?

我试过了

searchController?.searchBar.backgroundImage = UIImage()

但所做的只是使灰色边框清晰(更不用说它使 searchController 的 searchResultsController 不显示):

我希望边框消失,搜索栏占据 UIView 的整个框架。

【问题讨论】:

  • 您是否添加了约束以将其固定到视图?
  • @paper1111 我不使用约束。我通常使用框架。但是,如果您认为约束会起作用,您能否发布一个答案,其中包含我需要实现所述约束的代码?
  • 您使用 Storyboard 还是 XIB?
  • @paper1111 不,我都是以编程方式完成的

标签: swift xcode uisearchbar uisearchcontroller


【解决方案1】:
let SEARCH_BAR_SEARCH_FIELD_KEY = "searchField"
let SEARCH_BAR_PLACEHOLDER_TEXT_KEY = "_placeholderLabel.textColor"

func customiseSearchBar() {

    searchBar.isTranslucent = true
    searchBar.backgroundImage =  UIImage.imageWithColor(color: UIColor.yellow, size: CGSize(width: searchBar.frame.width,height: searchBar.frame.height))

    //modify textfield font and color attributes
    let textFieldSearchBar = searchBar.value(forKey: SEARCH_BAR_SEARCH_FIELD_KEY) as? UITextField
    textFieldSearchBar?.backgroundColor = UIColor.yellow
    textFieldSearchBar?.font = UIFont(name: "Helvetica Neue" as String, size: 18)
    textFieldSearchBar?.setValue(UIColor.yellow, forKeyPath: SEARCH_BAR_PLACEHOLDER_TEXT_KEY)
}

extension UIImage {

    class func imageWithColor(color: UIColor, size: CGSize) -> UIImage {
        let rect: CGRect = CGRect(x: 0, y: 0, width: size.width, height: size.height)
        UIGraphicsBeginImageContextWithOptions(size, false, 0)
        color.setFill()
        UIRectFill(rect)
        let image: UIImage = UIGraphicsGetImageFromCurrentImageContext()!
        UIGraphicsEndImageContext()
        return image
    }
}

这可以根据您的要求实现 UI,如果您需要对此进行更多自定义,请告诉我。顺便说一句,这是在 swift 3 中。

【讨论】:

    猜你喜欢
    • 2021-08-17
    • 1970-01-01
    • 2013-01-12
    • 2015-03-12
    • 2011-03-21
    • 1970-01-01
    • 2021-04-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多