web-dev-qa-db-ja.com

iOS7の検索バーのキャンセルボタンのテキストの色を変更するにはどうすればよいですか?

IOS7でUISearchBarの[キャンセル]ボタンのテキストの色を変更する必要があります。

通常UISearchBar [キャンセル]ボタンtextColorは青色であり、textColorredColorに変更したいです。

enter image description here

どうすれば変更できますか?

37
Fire Fist

自分の質問に対する答えを見つけました。

ここにコードがあります。すべてのキャンセルボタンを変更する場合は、AppDelegateを追加します。

[[UIBarButtonItem appearanceWhenContainedIn:[UISearchBar class], nil] setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:
                                                                                                  [UIColor redColor],
                                                                                                  UITextAttributeTextColor,
                                                                                                  [UIColor whiteColor],
                                                                                                  UITextAttributeTextShadowColor,
                                                                                                  [NSValue valueWithUIOffset:UIOffsetMake(0, 1)],
                                                                                                  UITextAttributeTextShadowOffset,
                                                                                                  nil]
                                                                                        forState:UIControlStateNormal];

迅速:

let attributes = [NSForegroundColorAttributeName : UIColor.red]
    UIBarButtonItem.appearance(whenContainedInInstancesOf: [UISearchBar.self]).setTitleTextAttributes(attributes, for: .normal)
55
Fire Fist

ボタンのテキストの色のみを設定する場合、必要なのは1行のみです。

[[UIBarButtonItem appearanceWhenContainedIn: [UISearchBar class], nil] setTintColor:[UIColor redColor]];
16
s1m0n

もっと簡単な方法->

self.searchbar.tintColor = [UIColor darkGrayColor];
12
Kakshil Shah

このようにできます

[yourSearchBarName setTintColor:[UIColor whateverColorYouWant]];
12
HipHopCoder

- (void)searchBarTextDidBeginEditing:(UISearchBar *)searchBarでこのようにUISearchBarのサブビューを変更できます

UIView *view = [_searchBar.subviews objectAtIndex:0];
for (UIView *subView in view.subviews) {
    if ([subView isKindOfClass:[UIButton class]]) {
        UIButton *cancelButton = (UIButton *)subView;
        [cancelButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
        [cancelButton setTitleColor:[UIColor whiteColor] forState:UIControlStateHighlighted];
    }
}
9
morisunshine

Swift 5

let searchBarCancelButtonForegroundColor = UIColor.red
let attributes = [NSAttributedString.Key.foregroundColor: searchBarCancelButtonForegroundColor]

// Regular mode
UIBarButtonItem.appearance(whenContainedInInstancesOf: [UISearchBar.self]).setTitleTextAttributes(attributes, for: .normal)

// After click
UIBarButtonItem.appearance(whenContainedInInstancesOf: [UISearchBar.self]).tintColor = searchBarCancelButtonForegroundColor

Swift 4

appearanceモジュールのUIAppearance関数を使用します-

方法1:-searchBarでロード時にキャンセルボタンを表示-

let attributes = [NSAttributedStringKey.foregroundColor : UIColor.red]
    UIBarButtonItem.appearance(whenContainedInInstancesOf: [UISearchBar.self]).setTitleTextAttributes(attributes, for: .normal)

または-

方法2:-searchBarがクリックされた後にキャンセルボタンの色を表示する-

  UIBarButtonItem.appearance(whenContainedInInstancesOf:[UISearchBar.self]).tintColor = UIColor.red

enter image description here

7
Jack

次のように検索バーのキャンセルボタンをフォーマットできます。

[[UIBarButtonItem appearanceWhenContainedIn: [UISearchBar class], nil] setTintColor:[UIColor whiteColor]];
    [[UIBarButtonItem appearanceWhenContainedIn: [UISearchBar class], nil] setTitle:@"Your Text Here"];

それがあなたのために働くことを願っています。

6
Bhoopi

スウィフト3:

このコードを使用して、赤色(テキスト、コース、ボタン)を設定します

searchController.searchBar.tintColor = .red

キャンセルボタンの色を白に変更したい場合は、このコードも追加してください

UIBarButtonItem.appearance(whenContainedInInstancesOf: [UISearchBar.self]).setTitleTextAttributes([NSForegroundColorAttributeName : UIColor.white], for: .normal)
3
Beslan Tularov
[[UISearchBar appearance] setTintColor:[UIColor redColor]];
2
jkyin

テスト済みSwift 4

    let barButtonItem = UIBarButtonItem.appearance(whenContainedInInstancesOf: [UISearchBar.self])
    barButtonItem.title = NSLocalizedString("Cancel", comment: "")
    barButtonItem.setTitleTextAttributes([.font            : UIFont.systemFont(ofSize: 15.0, weight: .medium),
                                          .foregroundColor : #colorLiteral(red: 0.1960784314, green: 0.1960784314, blue: 0.1960784314, alpha: 1)], for: .normal)
1
Den

カーソルとボタンの色を個別に設定する私のアプローチは次のとおりです。AppDelegateでカーソルの色を青に設定します(-application:didFinishLaunchingWithOptions :):

[[UITextField appearanceWhenContainedInInstancesOfClasses:@[[UISearchBar class]]] setTintColor:[UIColor blueColor]];

次に、各コントローラーの検索バーの色合いを使用して、ボタンの色を設定します。ストーリーボード上でも色合いの色を設定できます。

1
gklka

Swift= 3:

self.searchController.searchBar.tintColor = UIColor.white
1
pableiros

Swift 4.2

let attributes = [NSAttributedString.Key.foregroundColor: UIColor.white]
UIBarButtonItem.appearance(whenContainedInInstancesOf: [UISearchBar.self]).setTitleTextAttributes(attributes, for: UIControl.State.normal)

テキスト属性は、IOS 7から非推奨ですIOS 7以降

[[UIBarButtonItem appearanceWhenContainedIn:[UISearchBar class], nil] setTitleTextAttributes:@{NSForegroundColorAttributeName : [UIColor whiteColor], NSFontAttributeName : [UIFont fontWithName:@"Helvetica" size:17]} forState:UIControlStateNormal];
0
iOS Developer

スイフト4

let uiButton = bar.value(forKey: "cancelButton") as? UIButton
uiButton?.setTitle("Cancel", for: .normal)
uiButton?.setTitleColor(UIColor.white,for: .normal)
0
Yifan

UISearchBarの代わりに SHSearchBar があります。このSwiftフレームワークは、オープンソースのハッキングなしで簡単にカスタマイズでき、多くの単体テストがあり、 Cocoapods で利用できます。少なくともiOS 8が必要です。

0
blackjacx

Swiftを使用している人のために、最初に Eddie Kの拡張子 を追加する必要がありました

それから私はそれをそのように呼ぶことができました(基本的に受け入れられた答えでサボがしたこと):

UIBarButtonItem.appearanceWhenContainedWithin(UISearchBar.self).setTitleTextAttributes()
0
ghostatron