2017-05-04 6 views
2

Ich habe eine CAShapeLayer nur mit abgerundeten Ecken. Was ich möchte, ist einen Schatten am unteren Rand hinzufügen, aber es funktioniert nicht, obwohl der Code offensichtlich richtig aussieht. Es tut es nur um die unteren Ecken, aber ich sehe keinen Schatten.Fügen Sie einen Schatten mit CAShapeLayer hinzu?

let shapeLayer = CAShapeLayer() 

    let path = UIBezierPath(roundedRect: self.bounds, byRoundingCorners: [.bottomLeft, .bottomRight], cornerRadii: CGSize(width: 20, height: 20)).cgPath 
    shapeLayer.path = path 

    shapeLayer.shadowColor = UIColor(r: 233, g: 233, b: 233).cgColor 
    shapeLayer.shadowOffset = CGSize(width: 0.0, height: 2.8) 
    shapeLayer.shadowOpacity = 1.0 
    shapeLayer.shadowRadius = 0.0 
    shapeLayer.shouldRasterize = true 
    shapeLayer.rasterizationScale = UIScreen.main.scale 

    layer.rasterizationScale = UIScreen.main.scale 
    layer.mask = shapeLayer 

Antwort

2

Die shapeLayer ist die Ecken Ihrer Ansicht Rundung, weil sie als die Maske des Schicht eingestellt wird. Wahrscheinlich möchtest du es stattdessen als Sublayer hinzufügen.

Alt:

layer.mask = shapeLayer 

Neu:

layer.addSublayer(shapeLayer) 

schrieb ich eine andere Antwort über einen Schatten auf eine Ansicht mit abgerundeten Ecken hier hinzufügen, wenn es hilft: https://stackoverflow.com/a/41475658/6658553

+1

Dank ! Ich habe eine Idee von dieser Frage. Ich habe lediglich eine Dummy-Hintergrundansicht mit einem Schlagschatten erstellt. und fügen Sie es in die Ansicht ein (mit 'insertSubView'), die die abgerundeten Ecken hatte. –

+0

Wenn ich den Sublayer zu meinem Layer hinzufüge, wird der View komplett schwarz –

Verwandte Themen