Подтвердить что ты не робот

Как изменить кнопку textColor отменить UISearchBar в iOS7?

Мне нужно изменить цвет текста кнопки Отмена UISearchBar в iOS7.

Обычно UISearchBar Кнопка отмены textColor является синей, и я хочу изменить textColor на redColor.

enter image description here

Как я могу изменить его?

4b9b3361

Ответ 1

Я нашел ответы на свои вопросы.

Вот код, добавьте AppDelegate, если вы хотите изменить все кнопки отмены.

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

Swift:

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

Ответ 2

Если вы хотите только установить цвет текста кнопки, вам потребуется только одна строка:

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

Ответ 3

Вы можете сделать это так:

[yourSearchBarName setTintColor:[UIColor whateverColorYouWant]];

Ответ 4

Гораздо проще →

self.searchbar.tintColor = [UIColor darkGrayColor];

Ответ 5

Вы можете изменить subviews UISearchBar, как это, в - (void)searchBarTextDidBeginEditing:(UISearchBar *)searchBar

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];
    }
}

Ответ 6

Вы можете отформатировать кнопку отмены поиска, как показано ниже.

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

Надеется, что это сработает для вас.

Ответ 7

Обновлено для 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

Ответ 8

Swift 3:

Используйте этот код для установки красного цвета (текст, курсор, кнопка)

searchController.searchBar.tintColor = .red

если вы хотите изменить цвет кнопки отмены на белый, добавьте этот код тоже

UIBarButtonItem.appearance(whenContainedInInstancesOf: [UISearchBar.self]).setTitleTextAttributes([NSForegroundColorAttributeName : UIColor.white], for: .normal)

Ответ 9

[[UISearchBar appearance] setTintColor:[UIColor redColor]];

Ответ 10

Мой подход к настройке курсора и цвета кнопки независимо от этого: я установил цвет курсора синим в приложении Делегат приложения (-application: didFinishLaunchingWithOptions:):

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

И затем используйте цвет оттенка строки поиска в каждом контроллере, чтобы установить цвет кнопок. Вы можете установить цвет оттенков даже на Раскадке.

Ответ 11

Для Swift 3:

self.searchController.searchBar.tintColor = UIColor.white

Ответ 12

Проверено на 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)

Ответ 13

Для быстрой 4.2

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

Ответ 14

Для людей, использующих Swift, мне пришлось сначала добавить Расширение Eddie K

Тогда я смог назвать это так (в основном, что Сабо сделал в принятом ответе):

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

Ответ 15

UITextAttribute лишается использования IOS 7 ниже для IOS 7 или более поздней версии

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

Ответ 16

Альтернативой UISearchBar будет SHSearchBar. Эта быстрая структура легко настраивается без взлома, с открытым исходным кодом, имеет множество модульных тестов и доступна через Cocoapods. Ему нужно, по крайней мере, iOS 8.

Ответ 17

Swift 4

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