Как бы я добавил тени к градиенту UIView, прикрепленному к основному виду в UICollectionView - PullRequest
0 голосов
/ 06 февраля 2020

Я пытаюсь добавить собственную тень к своему uiview с градиентом в ячейке коллекции, но я, кажется, делаю все задом наперед ... Я добавил этот класс EHGradientView к своему основному виду в UICollectionView. И изменив класс, который, казалось, работал на мои отдельные предметы. Но тень оказывается трудной.

IBDesignable
class EHGradientView: UIView {


        override class var layerClass: AnyClass {
            return CAGradientLayer.self
        }

        private var gLayer: CAGradientLayer {
            return self.layer as! CAGradientLayer
        }

        override init(frame: CGRect) {
            super.init(frame: frame)
            commonInit()
        }

        required init?(coder aDecoder: NSCoder) {
            super.init(coder: aDecoder)
            commonInit()
        }

        func commonInit() {

            gLayer.type = .axial

            gLayer.colors = [
                UIColor(red: 1, green: 0.46, blue: 0.467, alpha: 1).cgColor,

                UIColor(red: 1, green: 0.36, blue: 0.369, alpha: 1).cgColor

            ]
            gLayer.locations = [0, 1]
            gLayer.startPoint = CGPoint(x: 0.25, y: 0.5)
            gLayer.endPoint = CGPoint(x: 0.75, y: 0.5)

            // exaggerated colors so it's obvious

            gLayer.cornerRadius = 28

            shadow()


        }

      func shadow() {
         var shadows = UIView()

        shadows.frame = frame

        shadows.clipsToBounds = false

        addSubview(shadows)


        let shadowPath0 = UIBezierPath(roundedRect: shadows.bounds, cornerRadius: 10)

        let layer0 = CALayer()

        layer0.shadowPath = shadowPath0.cgPath

        layer0.shadowColor = UIColor(red: 1, green: 0.36, blue: 0.369, alpha: 0.4).cgColor

        layer0.shadowOpacity = 1

        layer0.shadowRadius = 20

        layer0.shadowOffset = CGSize(width: 0, height: 5)

        layer0.bounds = shadows.bounds

        layer0.position = shadows.center

        shadows.layer.addSublayer(layer0)


        var shapes = UIView()

        shapes.frame = frame

        shapes.clipsToBounds = true

        addSubview(shapes)


        let layer1 = CALayer()

        layer1.backgroundColor = UIColor(red: 1, green: 1, blue: 1, alpha: 1).cgColor

        layer1.bounds = shapes.bounds

        layer1.position = shapes.center

        shapes.layer.addSublayer(layer1)


        shapes.layer.cornerRadius = 10



    }


Это код тени, который я продолжаю пытаться комбинировать с ним, чтобы тень находилась под ним и в итоге выглядела так. enter image description here

Вместо этого я получаю вот что:

enter image description here

1 Ответ

0 голосов
/ 06 февраля 2020

Ниже код может помочь вам.

backgroundColor = .systemPink
layer.cornerRadius = 20
layer.masksToBounds = false
layer.shadowColor = UIColor.red.cgColor
layer.shadowOpacity = 0.3
layer.shadowRadius = 9.0
layer.shadowOffset = CGSize(width: 1, height: 5)

modified properties values and got this result. May this help you.

...