UISearchBar 自定义角
UISearchBar custom corners
我正在尝试创建这样的搜索栏:
但我注意到我可能不得不用我自己的图片替换搜索栏,因为当我设置时搜索栏的角出现错误:
self.searchController.searchBar.layer.cornerRadius = 50 // I've tried other numbers besides this too with no luck
self.searchController.searchBar.clipsToBounds = true
如果我这样设置:
self.searchController.searchBar.layer.cornerRadius = self.searchController.searchBar.bounds.height/2
搜索栏出来是这样的:
仍然与图像中的不完全一样。
有没有办法用图像替换文本字段的左侧和右侧,这样我就可以使用自定义搜索栏中的圆角?
这里的问题是您在 UISearchBar 上设置圆角半径,而不是其中的 UITextField。您可以进行某种黑客攻击来获取 UITextField,但实际上并不推荐这样做。
正如您在问题中提到的,您需要使用自定义图像和此处显示的方法:https://developer.apple.com/library/ios/documentation/UIKit/Reference/UISearchBar_Class/#//apple_ref/doc/uid/TP40007529-CH3-SW40
这对我有用 swift 3 iOS 10:
searchController.searchBar.layer.cornerRadius = 20
searchController.searchBar.clipsToBounds = true
我正在使用此代码 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;
}
}
ez way for searchbarview
对于子视图和 POPUP [Swift 5]
override func layoutSublayers(of layer: CALayer) {
searchBarPopup.clipsToBounds = true
searchBarPopup.layer.cornerRadius = 10
searchBarPopup.layer.maskedCorners = [ .layerMaxXMinYCorner, .layerMinXMinYCorner]
}
您应该更改 UISearchBar 中 searchTextField 的半径。
你可以这样做:
searchBar.searchTextField.layer.cornerRadius = 20
searchBar.searchTextField.layer.masksToBounds = true
* searchBar 是 storyBoard 中 UISearchBar 的一个 outlet
我正在尝试创建这样的搜索栏:
但我注意到我可能不得不用我自己的图片替换搜索栏,因为当我设置时搜索栏的角出现错误:
self.searchController.searchBar.layer.cornerRadius = 50 // I've tried other numbers besides this too with no luck
self.searchController.searchBar.clipsToBounds = true
如果我这样设置:
self.searchController.searchBar.layer.cornerRadius = self.searchController.searchBar.bounds.height/2
搜索栏出来是这样的:
仍然与图像中的不完全一样。
有没有办法用图像替换文本字段的左侧和右侧,这样我就可以使用自定义搜索栏中的圆角?
这里的问题是您在 UISearchBar 上设置圆角半径,而不是其中的 UITextField。您可以进行某种黑客攻击来获取 UITextField,但实际上并不推荐这样做。
正如您在问题中提到的,您需要使用自定义图像和此处显示的方法:https://developer.apple.com/library/ios/documentation/UIKit/Reference/UISearchBar_Class/#//apple_ref/doc/uid/TP40007529-CH3-SW40
这对我有用 swift 3 iOS 10:
searchController.searchBar.layer.cornerRadius = 20
searchController.searchBar.clipsToBounds = true
我正在使用此代码 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;
}
}
ez way for searchbarview
对于子视图和 POPUP [Swift 5]
override func layoutSublayers(of layer: CALayer) {
searchBarPopup.clipsToBounds = true
searchBarPopup.layer.cornerRadius = 10
searchBarPopup.layer.maskedCorners = [ .layerMaxXMinYCorner, .layerMinXMinYCorner]
}
您应该更改 UISearchBar 中 searchTextField 的半径。
你可以这样做:
searchBar.searchTextField.layer.cornerRadius = 20
searchBar.searchTextField.layer.masksToBounds = true
* searchBar 是 storyBoard 中 UISearchBar 的一个 outlet