私はこのような検索バーを作成しようとしています:
しかし、次のように設定すると検索バーの角が間違って表示されるため、検索バーを自分の画像に置き換える必要があることに気づいています。
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ではなく、UISearchBarでコーナー半径を設定していることです。 UITextFieldを取得するために何らかのハックを行うことができますが、それは実際には推奨されません。
質問で述べたように、カスタムイメージとここに示すメソッドを使用する必要があります: https://developer.Apple.com/library/ios/documentation/UIKit/Reference/UISearchBar_Class/#// Apple_ref/doc/uid/TP40007529-CH3-SW4
私はこのコード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;
}
}
UISearchBar内のsearchTextFieldの半径を変更する必要があります。
あなたはこのようにそれを行うことができます:
searchBar.searchTextField.layer.cornerRadius = 20
searchBar.searchTextField.layer.masksToBounds = true
* searchBarは、storyBoardのUISearchBarのアウトレットです。
searchbarviewのez方法
サブビューとポップアップ用[Swift5]
override func layoutSublayers(of layer: CALayer) {
searchBarPopup.clipsToBounds = true
searchBarPopup.layer.cornerRadius = 10
searchBarPopup.layer.maskedCorners = [ .layerMaxXMinYCorner, .layerMinXMinYCorner]
}