質問

私の検索バーの色合い色を白くすることができます(キャンセルボタンは白くなることを意味します)。色合い色が白のときにカーソルは見えません。カーソル色を別々に設定する方法はありますか?

役に立ちましたか?

解決

引っぱい色をカラーに設定して、 uiappearanceプロトコルテキストフィールドの色合い色を変更するには、カーソルを作成したい色になる色になります。EX:

[self.searchBar setTintColor:[UIColor whiteColor]];                
[[UITextField appearanceWhenContainedIn:[UISearchBar class], nil] setTintColor:[UIColor darkGrayColor]];
.

他のヒント

あなたが機能していますが、それでも厄介な一人のライナーが賢明であるならば、私はこれにループダウンのためのベンジャミンを手に入れました:

searchController.searchBar.tintColor = UIColor.whiteColor()

searchController.searchBar.subviews[0].subviews.flatMap(){ $0 as? UITextField }.first?.tintColor = UIColor.blueColor()
.

SWIFT 3.0および4バージョン

searchController.searchBar.tintColor = .white        
UITextField.appearance(whenContainedInInstancesOf: [type(of: searchController.searchBar)]).tintColor = .black
.

検索バーはオプションではありません。

COMPACT SWIFT 2.0ソリューション 構文(ループを破る必要はありません):

// Make SearchBar's tint color white to get white cancel button.
searchBar.tintColor = UIColor.white()

// Loop into it's subviews and find TextField, change tint color to something else.
for subView in searchBar.subviews[0].subviews where subView.isKindOfClass(UITextField) {
        subView.tintColor = UIColor.darkTextColor()
}
.

searchBar.tintColor = [UIColor whiteColor];
searchBar.backgroundColor = [UIColor clearColor];
for ( UIView *v in [searchBar.subviews.firstObject subviews] )
{
    if ( YES == [v isKindOfClass:[UITextField class]] )
    {
        [((UITextField*)v) setTintColor:[UIColor blueColor]];
        break;
    }
}
.

href="https://i.stack.imgur.com/dzox6.png" rel="noreferrer"> 画像の説明が入力されています

これは私と同様に私のために働くように見えた。

    searchController.searchBar.tintColor = UIColor.whiteColor()
    UITextField.appearanceWhenContainedInInstancesOfClasses([searchController.searchBar.dynamicType]).tintColor = UIColor.blackColor()
.

スウィフトで同じことを見ている人のために、ここに私がたくさんのトラブルが発生した後の解決策です:

override func viewWillAppear(animated: Bool) {
    self.searchBar.tintColor = UIColor.whiteColor()

    let view: UIView = self.searchBar.subviews[0] as! UIView
    let subViewsArray = view.subviews

    for (subView: UIView) in subViewsArray as! [UIView] {
        println(subView)
        if subView.isKindOfClass(UITextField){
            subView.tintColor = UIColor.blueColor()
        }
    }

}
.

次のコードでUisearchBarに拡張子を追加するだけです。

extension UISearchBar {
    var cursorColor: UIColor! {
        set {
            for subView in self.subviews[0].subviews where ((subView as? UITextField) != nil) {
                subView.tintColor = newValue
            }
        }
        get {
            for subView in self.subviews[0].subviews where ((subView as? UITextField) != nil) {
                return subView.tintColor
            }
            // Return default tintColor
            return UIColor.eightBit(red: 1, green: 122, blue: 255, alpha: 100)
        }
    }
}
.

IOS 9以上

キャンセルボタンとTextFieldで異なるTintColorを設定する最も簡単な方法では、これを使用します。

[self.searchBar setTintColor:[UIColor whiteColor]];
[[UITextField appearanceWhenContainedInInstancesOfClasses:@[[UISearchBar class]]] setTintColor:UIColor.blueColor];
.

これは最も簡単な解決策です。

let textField = self.searchBar.value(forKey: "searchField") as! UITextField

    textField.tintColor = UIColor.white
.

Swift 5:

    UITextField.appearance(whenContainedInInstancesOf: [UISearchBar.self]).tintColor = .black
.

ここにフェリペの回答の「機能的な」バージョン(Swift 4.2)

// Make SearchBar's tint color white to get white cancel button.
searchBar.tintColor = .white

// Get the TextField subviews, change tint color to something else.
if let textFields = searchBar.subviews.first?.subviews.compactMap({ $0 as? UITextField }) {
        textFields.forEach { $0.tintColor = UIColor.darkGray }
}
.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top