Я пытаюсь добавить собственную тень к своему 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
}
Это код тени, который я продолжаю пытаться комбинировать с ним, чтобы тень находилась под ним и в итоге выглядела так.
Вместо этого я получаю вот что: