Вопросы

Swift — как дать тень UISearchBar, но * не * его кнопку отмены?

У меня есть панель поиска, к которой я применил тень, и, как вы можете видеть, здесь, кнопка отмены тоже отбрасывает свою тень. Я бы хотел, чтобы тень ограничивалась текстовым полем поиска. Вот с чего я начинаю:

    let searchBar = UISearchBar()
    searchBar.placeholder = "KAT Milkshake"
    searchBar.backgroundImage = UIImage()
    searchBar.barTintColor = UIColor.white
    searchBar.compatibleSearchTextField.leftView?.tintColor = UIColor.gray
    searchBar.compatibleSearchTextField.backgroundColor = UIColor.white

    searchBar.layer.shadowColor = UIColor.black.cgColor
    searchBar.layer.shadowOpacity = 0.25
    searchBar.layer.shadowOffset = CGSize(width: 2, height: 2)
    searchBar.layer.shadowRadius = 5

Что я пробовал:

  1. Я попытался изменить внешний вид кнопки отмены с помощью UIBarButtonItem.appearance(whenContainedInInstancesOf: [UISearchBar.self]), но оказалось, что тень этого объекта — отдельная. Обратите внимание на тонкую разницу вокруг букв после того, как я применил другую тень, изменив свойства тени внешнего вида .

  2. Назначение кнопке белого фона изображения не сработало, что я и сделал, открыв searchBar.value(forKey: "cancelButton") as! UIButton. Тень применяется вокруг всего изображения и выглядит еще хуже.

  3. К сожалению, не удалось настроить границы слоя панели поиска (searchBar.layer.frame = CGRect(x: searchBar.frame.minX, y: searchBar.frame.minY, width: searchBar.frame.width - cancelButton.frame.width, height: searchBar.frame.height)). Я выделил слой панели поиска для наблюдения за этим, и тень кнопки отмены сохраняется .

  4. Я также попытался отсоединить кнопку отмены от супервизора, но смог только заставить ее полностью исчезнуть.

Читать:
Запрос Firebase ничего не возвращает

Есть ли способ обойти это? Я использую Swift 5 и iOS 14.

Вы можете найти UITextField в UISearchBar и настроить его. Вы можете искать расширения для доступа к textField из searchBar.   —  person srna    schedule 18.11.2020

@ibrahimyilmaz Вау, спасибо! Я чувствую себя глупо из-за того, что не думаю об этом. Это почти работает — вызывает некрасивое обрезание верхних и нижних теней. Я отправлю ответ, если выясню, как это исправить, не уменьшая радиус тени.   —  person srna    schedule 18.11.2020

Похожие записи

Может ли Pip установить зависимости, не указанные в setup.py во время установки?

admin

Должно ли имя пакета в Go совпадать с именем самого внутреннего каталога?

admin

Ошибка Tidymodels / XGBoost в last_fit со значением rsplit

admin

Pythons os.walk () посещает все папки, а не только данную папку

admin

Импорт репо в учетную запись Azure DevOps из другой учетной записи через REST API вызывает BAD-запрос.

admin

строки исчезают в таблице матов, когда я сначала фильтрую, а затем группирую таблицу

admin