如何屏蔽和添加阴影到UIView

ila*_*lan 12 calayer uiview cashapelayer ios swift

我正在创建一个自定义视图,我想要屏蔽并添加阴影.

掩蔽:

    let p = UIBezierPath()
    p.moveToPoint(CGPointMake(20, 20))
    p.addLineToPoint(CGPointMake(100, 20))
    p.addLineToPoint(CGPointMake(100, 50))
    p.addLineToPoint(CGPointMake(110, 55))
    p.addLineToPoint(CGPointMake(100, 60))
    p.addLineToPoint(CGPointMake(100, 100))
    p.addLineToPoint(CGPointMake(20, 100))
    p.closePath()

    let s = CAShapeLayer()
    s.frame = layer.bounds
    s.path = p.CGPath
    s.fillColor = UIColor.greenColor().CGColor
    layer.mask = s
Run Code Online (Sandbox Code Playgroud)

掩蔽工作,现在我想添加一个阴影.但它不起作用.

我试图在主图层添加阴影,没有任何反应.

    layer.shadowColor = UIColor.yellowColor().CGColor
    layer.shadowRadius = 10
    layer.shadowOpacity = 0.9
    layer.shadowOffset = CGSizeZero
Run Code Online (Sandbox Code Playgroud)

我试图将它添加到遮罩层,我得到了遮蔽阴影的主视图.

    s.shadowColor = UIColor.yellowColor().CGColor
    s.shadowRadius = 10
    s.shadowOpacity = 0.9
    s.shadowOffset = CGSizeZero
Run Code Online (Sandbox Code Playgroud)

有关如何将这个黄色阴影添加到蒙版视图的任何建议吗?

谢谢

ila*_*lan 9

谢谢@WilsonXJ我将mask更改为addSubLayer.

这个答案对我有用:

    let p = UIBezierPath()
    p.moveToPoint(CGPointMake(20, 20))
    p.addLineToPoint(CGPointMake(100, 20))
    p.addLineToPoint(CGPointMake(100, 50))
    p.addLineToPoint(CGPointMake(110, 55))
    p.addLineToPoint(CGPointMake(100, 60))
    p.addLineToPoint(CGPointMake(100, 100))
    p.addLineToPoint(CGPointMake(20, 100))
    p.closePath()

    let s = CAShapeLayer()
    s.fillColor = UIColor.whiteColor().CGColor
    s.frame = layer.bounds
    s.path = p.CGPath

    layer.backgroundColor = UIColor.clearColor().CGColor
    layer.addSublayer(s)

    layer.masksToBounds = true
    layer.shadowColor = UIColor.yellowColor().CGColor
    layer.shadowOffset = CGSizeZero
    layer.shadowOpacity = 0.9
    layer.shadowPath = p.CGPath
    layer.shadowRadius = 10
Run Code Online (Sandbox Code Playgroud)

  • 子视图正在隐藏 ,,,, (2认同)