2017-05-04 109 views
2

我有一个CAShapeLayer只有底部圆角。我想要的是在底部添加阴影,但它不起作用,即使代码看起来显然是正确的。它所有的东西都围绕着底角,但我没有看到阴影。用CAShapeLayer添加阴影?

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 

回答

2

shapeLayer因为它设置为层的面具被四舍五入视图的角落。您可能希望将其添加为子图层。

老:

layer.mask = shapeLayer 

新:

layer.addSublayer(shapeLayer) 

我写了另一个回答关于添加阴影与圆角这里查看是否有帮助:https://stackoverflow.com/a/41475658/6658553

+1

感谢!我从这个问题得到了一个想法。我所做的只是创建一个带阴影的虚拟背景视图;并将其插入到具有圆角的视图中(使用'insertSubView')。 –

+0

将子图层添加到我的图层会使视图完全变黑 –