曲线搜索栏 Swift 4

mad*_*989 1 uisearchbar uinavigationitem swift uisearchcontroller programmatically

我在导航控制器上以编程方式更改我的搜索栏设计时遇到问题。我只想使搜索栏曲线如下图所示:

在此处输入图片说明

我在堆栈溢出中尝试了很多示例,但我仍然无法改变形状。这是现在的样子:

在此处输入图片说明

这是源代码,关于已经完成的内容:

//MARK for searchBar UI
    searchController.dimsBackgroundDuringPresentation = false
    searchController.hidesNavigationBarDuringPresentation = false
    searchController.searchBar.placeholder = " Search for programs..."
    searchController.searchBar.sizeToFit()
    searchController.searchBar.isTranslucent = false
    searchController.searchBar.backgroundImage = UIImage()
    searchController.searchBar.delegate = self
    navigationItem.titleView = searchController.searchBar
    self.searchController.searchBar.layer.cornerRadius = 20.0
    self.searchController.searchBar.clipsToBounds = true
    // SearchBar text
    let textFieldInsideUISearchBar = searchController.searchBar.value(forKey: "searchField") as? UITextField
    textFieldInsideUISearchBar?.borderStyle = .roundedRect
    textFieldInsideUISearchBar?.font = textFieldInsideUISearchBar?.font?.withSize(14)
Run Code Online (Sandbox Code Playgroud)

现在,我真的不知道如何更改它,提前致谢。

PPL*_*PPL 6

这将帮助你,

let searchBar = UISearchBar()
Run Code Online (Sandbox Code Playgroud)

viewDidLoad()

searchBar.sizeToFit()
searchBar.placeholder = "Search"
self.navigationController?.navigationBar.barTintColor = UIColor.green //this is just for reference
self.navigationItem.titleView = searchBar

if let textfield = searchBar.value(forKey: "searchField") as? UITextField {
    textfield.textColor = UIColor.blue
    if let backgroundview = textfield.subviews.first {
        backgroundview.backgroundColor = UIColor.blue
        backgroundview.layer.cornerRadius = 20;
        backgroundview.clipsToBounds = true;
    }
}
Run Code Online (Sandbox Code Playgroud)

上面的代码会给你以下输出,

在此处输入图片说明