UISearchBar自定义角落

Tho*_*mas 11 uitextfield uisearchbar ios swift uisearchcontroller

我正在尝试创建一个这样的搜索栏:

在此输入图像描述

但是我注意到我可能不得不用我自己的图像替换搜索栏,因为当我设置时,搜索栏的角落出错了:

self.searchController.searchBar.layer.cornerRadius = 50 // I've tried other numbers besides this too with no luck
self.searchController.searchBar.clipsToBounds = true
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

如果我这样设置:

self.searchController.searchBar.layer.cornerRadius = self.searchController.searchBar.bounds.height/2
Run Code Online (Sandbox Code Playgroud)

搜索栏如下:

在此输入图像描述

这仍然不像图像中那样精确.

有没有办法用图像替换文本字段的左侧和右侧,这样我可以使用自定义搜索栏中的圆角?

小智 9

我使用此代码UISearchBar但您可以将此代码与UISearchController一起使用.

    let searchBar = UISearchBar()
                searchBar.sizeToFit()
                searchBar.placeholder = "Search"
                navigationItem.titleView = searchBar

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


Ham*_*ari 9

您应该在 UISearchBar 内更改 searchTextField 的半径。

你可以这样做:

searchBar.searchTextField.layer.cornerRadius = 20
searchBar.searchTextField.layer.masksToBounds = true
Run Code Online (Sandbox Code Playgroud)

* searchBar 是 storyBoard 的 UISearchBar 的一个出口


mbo*_*one 6

这里的问题是您正在 UISearchBar 上设置圆角半径,而不是其中的 UITextField 。您可以进行某种破解来获取 UITextField,但实际上并不推荐这样做。

正如您在问题中提到的,您需要使用自定义图像和此处显示的方法:https ://developer.apple.com/library/ios/documentation/UIKit/Reference/UISearchBar_Class/#//apple_ref/doc/ uid/TP40007529-CH3-SW40