Хобрук: Ваш путь к мастерству в программировании

UITextField backgroundColor в UISearchBar iOS 10+

Я пытаюсь установить произвольный цвет фона текстового поля в строке поиска. Я посмотрел на ответ безрезультатно:

Невозможно изменить цвет фона панели поиска

Видите, у этой панели поиска есть красное текстовое поле? Я следил за кодом и даже могу убедиться, что объект UISearchBarTextField был найден и цвет его фона установлен на UIColor.red, но цвет не меняется.

Я возился со всеми цветами фона супервизоров в надежде, что это может помочь, но я не могу изменить этот цвет. Может быть, есть какой-то новый трюк или кто-то сможет пролить свет на что-то, что может каким-то образом переопределить цвет.

extension UISearchBar {
    var textField: UITextField? {
        return subviews.first?.subviews.first(where: { $0.isKind(of: UITextField.self) }) as? UITextField
    }
}

searchBar.textField?.backgroundColor = UIColor.red // <-- Not working
let textFieldInsideUISearchBarLabel = searchBar.textField?.value(forKey: "placeholderLabel") as? UILabel
textFieldInsideUISearchBarLabel?.textColor = UIColor.lightGray

Обратите внимание, что текст внутри объекта UITextField меняется на светло-серый, как я хочу, а не на цвет фона UITextField.


Ответы:


1

После долгого ожидания ответа я решил попробовать поэкспериментировать. Я создал новый проект, перетащил панель поиска, подключил ее к ViewController, добавил расширение UISearchBar и установил цвет - точно так же, как и в моем основном проекте.

Вуаля! Он устанавливает цвет фона так, как должен, и как это показано в связанной теме в основном вопросе.

Итак, я поместил проекты рядом, открыл раскадровку в каждом из них и начал настраивать свойства searchBar по одному, пока не смог понять, почему панель не устанавливается так, как она должна быть в основном проекте.

Первое, что я попробовал, - это стиль поиска. В моем проекте он установлен на «Минимальный». Я изменил его на «Минимальный» в тестовом проекте и сразу заметил, что цвет больше не выставляется.

Таким образом, установка для свойства "Стиль поиска" searchBar в основном проекте значения "По умолчанию" позволила установить этот цвет фона.

Я был бы очень признателен, если бы кто-нибудь мог прокомментировать и сказать, почему я не могу использовать «Минимальный», если я хочу настроить цвет фона, или как я могу заставить его работать.

09.11.2017
  • Вы, сэр, гений. Вытащил меня прямо из целого. Браво. 11.10.2018
  • Во многом это потому, что searchBar в минималистичном стиле полупрозрачен. 13.12.2018
  • Новые материалы

    Что такое структура данных?
    Структура данных хранит и извлекает данные. Все, что обеспечивает эти две функции, является структурой данных . Период. Вы можете пропустить оставшуюся часть статьи, если ответ..

    мои январские чтения по программированию
    Эрик Эллиот Программирование приложения JavaScript Эл Свейгарт «Автоматизируйте скучные вещи с помощью Python» Прогрессивное веб-приложение Google..

    Создание ассоциаций секвелизации с помощью инструмента командной строки Sequelize
    Sequelize - популярный, простой в использовании инструмент объектно-реляционного сопоставления (ORM) JavaScript, который работает с базами данных SQL. Довольно просто начать новый проект с..

    Искусственный интеллект в юридической отрасли - пример прогнозирования судебных решений с помощью глубокого обучения
    На протяжении всей истории люди полагались на суды, присяжных, королей и королев в отправлении правосудия. Сегодня способность судов обеспечивать справедливое и быстрое правосудие для своих..

    Введение в машинное обучение для обнаружения аномалий (часть 1)
    Тщательно созданный, тщательно спроектированный ресурс для специалистов по данным. Часть 1 Главы 03 из Руководства по машинному обучению для обнаружения аномалий Внимание! Прежде чем вы..

    Начало работы с Pulumi в Digital Ocean
    Цифровой океан (ДО) — отличная альтернатива многим другим поставщикам облачных услуг. DO предоставляет простой и понятный пользовательский интерфейс, упрощающий управление инфраструктурой и..

    #Day68 из #100days_of_coding
    Вчера был мой 68-й день кодинга. я решил один вопрос Проблема: Разбить двоичную строку на подстроки с равным количеством нулей и единиц Дана двоичная строка str длины N . Задача состоит..