UISearchBar
の先頭にPFQueryTableViewController
を追加しました。 searchBarの色をアプリの色に変更しましたが、これを行うと、その右側の[キャンセル]ボタンの色も同じ色に変更されたようです。理想的には、色を白にしたいです。
この画像は、現在の外観を示しています。
「キャンセル」ボタンはないように見えますが、searchBarと同じ色があります(まだ押すことができます)。
この[キャンセル]ボタンの色を白に変更する方法はありますか?私が試したすべてが違いはないようです。
UISearchBar
をこの色にするために使用したコード:
UISearchBar.appearance().barTintColor = UIColor(hue: 359/360, saturation: 67/100, brightness: 71/100, alpha: 1)
UISearchBar.appearance().tintColor = UIColor(hue: 359/360, saturation: 67/100, brightness: 71/100, alpha: 1)
そして、ストーリーボードでこれらを設定しました:
そして最後に、プレースホルダーとSearchBar内のテキストを白にするために、私は使用しました:
for subView in self.filmSearchBar.subviews {
for subsubView in subView.subviews {
if let searchBarTextField = subsubView as? UITextField {
searchBarTextField.attributedPlaceholder = NSAttributedString(string: NSLocalizedString("Search Cinevu film reviews", comment: ""), attributes: [NSForegroundColorAttributeName: UIColor.whiteColor()])
searchBarTextField.textColor = UIColor.whiteColor()
}
}
}
助けてくれてありがとう! :)
周りを見て、これは私が必要なものを達成するための最良の方法であるように見えました:
let cancelButtonAttributes = [NSAttributedStringKey.foregroundColor: UIColor.white]
UIBarButtonItem.appearance().setTitleTextAttributes(cancelButtonAttributes , for: .normal)
コードで次の1行を使用して、キャンセルボタンの色を変更します。
UIBarButtonItem.appearance(whenContainedInInstancesOf: [UISearchBar.self]).setTitleTextAttributes([NSAttributedStringKey(rawValue: NSAttributedStringKey.foregroundColor.rawValue): UIColor.white], for: .normal)
Xcode 9.2でSwift 4.0でチェックイン
Nick89のコードに基づいて、Swift 3.1のように変更しました
_let cancelButtonAttributes: [String: AnyObject] = [NSForegroundColorAttributeName: UIColor.white]
UIBarButtonItem.appearance(whenContainedInInstancesOf: [UISearchBar.self]).setTitleTextAttributes(cancelButtonAttributes, for: .normal)
_
すべてのUIBarButtonではなくUISearchBar
のみを変更したいので、UIBarButtonItem.appearance(whenContainedInInstancesOf: [UISearchBar.self])
のように使用しています
uISearchBar.appearance()。tintColor = UIColor.whiteColor()を試しましたか
Swift 4.2
UIBarButtonItem.appearance(whenContainedInInstancesOf: [UISearchBar.self]).setTitleTextAttributes([NSAttributedString.Key.foregroundColor: UIColor.black], for: .normal)
Swift 4.2バージョン、他の回答に基づく:
let cancelButtonAttributes: [NSAttributedString.Key: Any] = [NSAttributedString.Key(rawValue: NSAttributedString.Key.foregroundColor.rawValue): UIColor.orange]
UIBarButtonItem.appearance(whenContainedInInstancesOf: [UISearchBar.self]).setTitleTextAttributes(cancelButtonAttributes, for: .normal)
Swift 4.0リリース2017-09-19ツールチェーンでは、これは機能しました:
let cancelButtonAttributes = [NSAttributedStringKey.foregroundColor: UIColor.white]
UIBarButtonItem.appearance(whenContainedInInstancesOf: [UISearchBar.self]).setTitleTextAttributes(cancelButtonAttributes, for: .normal)
SearchBarのtintcolorを設定するだけで、キャンセルボタンの色を変更できます。 Swift 4であるため、トリックを行う必要があります。
let searchBar = UISearchBar(frame: )
searchBar.tintColor = .orange
上記のすべての答えは私にはうまくいきませんでした。 (Got 'Type' NSAttributedString.Key '(別名' NSString ')にはメンバー' foregroundColor 'エラーがありません)
多分、私はSwift 3 ...
私のために働いたわずかに変更されたコードは次のとおりです:
UIBarButtonItem.appearance(whenContainedInInstancesOf: [UISearchBar.self]).setTitleTextAttributes([NSForegroundColorAttributeName : .black], for: .normal)
注意:-
UISearchControllerを使用している場合は、このコードを「willPresentSearchController:」または「didPresentSearchController:」に挿入します