web-dev-qa-db-ja.com

UISearchBarカスタムコーナー

私はこのような検索バーを作成しようとしています:

enter image description here

しかし、次のように設定すると検索バーの角が間違って表示されるため、検索バーを自分の画像に置き換える必要があることに気づいています。

self.searchController.searchBar.layer.cornerRadius = 50 // I've tried other numbers besides this too with no luck
self.searchController.searchBar.clipsToBounds = true

enter image description here

これを設定した場合:

self.searchController.searchBar.layer.cornerRadius = self.searchController.searchBar.bounds.height/2

検索バーは次のように表示されます。

enter image description here

これはまだ画像のように正確ではありません。

カスタム検索バーの丸みを帯びた角を使用できるように、テキストフィールドの左側と右側を画像に置き換える方法はありますか?

14
Thomas

ここでの問題は、UISearchBar内のUITextFieldではなく、UISearchBarでコーナー半径を設定していることです。 UITextFieldを取得するために何らかのハックを行うことができますが、それは実際には推奨されません。

質問で述べたように、カスタムイメージとここに示すメソッドを使用する必要があります: https://developer.Apple.com/library/ios/documentation/UIKit/Reference/UISearchBar_Class/#// Apple_ref/doc/uid/TP40007529-CH3-SW4

4
mbottone

私はこのコード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;
                    }
                }
10
Usman

これはIS私のためにSwift 3 iOS 10で働いています:

    searchController.searchBar.layer.cornerRadius = 20
    searchController.searchBar.clipsToBounds = true

enter image description here

2
devjme

UISearchBar内のsearchTextFieldの半径を変更する必要があります。

あなたはこのようにそれを行うことができます:

searchBar.searchTextField.layer.cornerRadius = 20
searchBar.searchTextField.layer.masksToBounds = true

* searchBarは、storyBoardのUISearchBarのアウトレットです。

2

searchbarviewのez方法

サブビューとポップアップ用[Swift5]

override func layoutSublayers(of layer: CALayer) {
    searchBarPopup.clipsToBounds = true
    searchBarPopup.layer.cornerRadius = 10
    searchBarPopup.layer.maskedCorners = [ .layerMaxXMinYCorner, .layerMinXMinYCorner]
}

0