Тень на пользовательской кнопке панели навигации, обрезаемая до границIOS

Программируем под IOS
Anonymous
Тень на пользовательской кнопке панели навигации, обрезаемая до границ

Сообщение Anonymous »

У меня есть кнопка «Назад» на панели навигации, которую я хочу использовать с тенью, но тень ограничивается границами панели навигации. Возможно ли, что тени выходят за пределы панели навигации?

В этом примере я упростил и сильно преувеличил эффект:
Изображение


Код кнопки выглядит примерно так:

Код: Выделить всё

    let button = UIButton();
button.layer.shadowOffset = CGSize(width: 0, height: 12);
button.layer.shadowColor = UIColor(red: 0.06, green: 0.09, blue: 0.13, alpha: 0.8).cgColor;
button.layer.shadowOpacity = 1;
button.layer.shadowRadius = 14;
button.backgroundColor = UIColor(red:0, green:0.65, blue:0.57, alpha:1);
button.layer.cornerRadius = 20;

button.translatesAutoresizingMaskIntoConstraints = false;
button.widthAnchor.constraint(equalToConstant: 40).isActive = true;
button.heightAnchor.constraint(equalToConstant: 40).isActive = true;

self.navigationItem.leftBarButtonItem = UIBarButtonItem(customView: button);
Я также сделал свою панель навигации прозрачной с помощью следующего кода:

Код: Выделить всё

    self.navigationController?.navigationBar.setBackgroundImage(UIImage(), for: .default);
self.navigationController?.navigationBar.shadowImage = UIImage();
self.navigationController?.navigationBar.isTranslucent = true;
Я уже пробовал установить для clipsToBounds и Layer.masksToBounds значение false в навигационной панели, но это не решило проблему. Я полагаю, что в качестве хака я мог бы просто увеличить размер навигационной панели и переместить кнопку, чтобы тень не обрезала статусную панель, но надеюсь, что кто-то знает более идеальное решение.

Подробнее здесь: https://stackoverflow.com/questions/499 ... -to-bounds

Вернуться в «IOS»