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. Я также попытался отсоединить кнопку отмены от супервизора, но смог только заставить ее полностью исчезнуть.

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

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

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

Источник: ledsshop.ru

Стиль жизни - Здоровье!