Как затенять, чтобы быстро просматривать все 4 стороны? - PullRequest
0 голосов
/ 19 июня 2020

Я пытаюсь получить тень со всех 4 сторон, но в настоящее время получаю только с 3 сторон.

alertCard.layer.cornerRadius = 10
alertCard.layer.shadowOffset = CGSize(width: 0, height: 5)
alertCard.layer.shadowOpacity = 0.5 //0.5
alertCard.layer.shadowRadius = 1 //3
alertCard.layer.shadowColor  = yellowColor?.cgColor

enter image description here

Пожалуйста, предложите способ получить тень со всех 4 сторон

Ответы [ 3 ]

2 голосов
/ 19 июня 2020

Используя расширение UIView, мне удалось добиться этого в одном из моих приложений:

extension UIView {

    open func generateOuterShadow() {
        let view = UIView()
        view.translatesAutoresizingMaskIntoConstraints = false
        view.layer.cornerRadius = layer.cornerRadius
        view.layer.shadowRadius = layer.shadowRadius
        view.layer.shadowOpacity = layer.shadowOpacity
        view.layer.shadowColor = layer.shadowColor
        view.layer.shadowOffset = CGSize.zero
        view.clipsToBounds = false
        view.backgroundColor = .white

        superview?.insertSubview(view, belowSubview: self)

        let constraints = [
            NSLayoutConstraint(item: view, attribute: .left, relatedBy: .equal, toItem: self, attribute: .left, multiplier: 1.0, constant: 0.0),
            NSLayoutConstraint(item: view, attribute: .right, relatedBy: .equal, toItem: self, attribute: .right, multiplier: 1.0, constant: 0.0),
            NSLayoutConstraint(item: view, attribute: .top, relatedBy: .equal, toItem: self, attribute: .top, multiplier: 1.0, constant: 0.0),
            NSLayoutConstraint(item: view, attribute: .bottom, relatedBy: .equal, toItem: self, attribute: .bottom, multiplier: 1.0, constant: 0.0),
        ]
        superview?.addConstraints(constraints)
    }
}

Использование:

override func viewDidLoad() {
    super.viewDidLoad()

    // Do any additional setup after loading the view.

    shadowView.generateOuterShadow() // Add

}
0 голосов
/ 19 июня 2020

Просто установите смещение тени на .zero:

alertCard.layer.cornerRadius = 10
alertCard.layer.shadowOffset = .zero
alertCard.layer.shadowOpacity = 0.5
alertCard.layer.shadowRadius = 3
alertCard.layer.shadowColor  = yellowColor?.cgColor
0 голосов
/ 19 июня 2020

Просто измените offSet на ноль

alertCard.layer.shadowOffset =  .zero
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...