在蒙版 UIView 周围添加阴影

Add shadow around a masked UIView

我正在尝试创建一个带有提示的弹出窗口。以下是这个

的代码
tipView.frame = CGRect(x: at.x - size.width, y: at.y, width: size.width, height: size.height)
        let imgView = UIImageView.init(frame: CGRect(x: 0, y: 0, width: tipView.frame.width, height: tipView.frame.height))
        imgView.image = #imageLiteral(resourceName: "popup.png")
        tipView.mask = imgView

我用弹出框形状的图像遮盖了 UIView。

现在我想在 UIView 的所有 4 个边上添加阴影。我尝试了所有的方法。但是影子不可见

将此代码添加到您的视图层:

// set the corner radius
layer.cornerRadius = 6.0
layer.masksToBounds = false
// set the shadow properties
layer.shadowColor = UIColor.black.cgColor
layer.shadowOffset = CGSize(width: 0, height: 1.0)
layer.shadowOpacity = 0.2
layer.shadowRadius = 4.0

请仔细阅读此 link 了解详情

添加以下代码以将阴影和圆角半径添加到 tipView。清除 backgroundColor 并创建 clipsToBounds = false 的 tipView。

    let shapeLayer = CAShapeLayer()
    shapeLayer.path = UIBezierPath(roundedRect: tipView.bounds, byRoundingCorners: [.topLeft, .bottomLeft, .bottomRight], cornerRadii: CGSize(width: 20, height: 20)).cgPath
    shapeLayer.fillColor = UIColor.darkGray.cgColor
    shapeLayer.masksToBounds = false

    shapeLayer.shadowColor = UIColor.darkGray.cgColor
    shapeLayer.shadowPath = shapeLayer.path
    shapeLayer.shadowOffset = CGSize(width: 0, height: 2)
    shapeLayer.shadowOpacity = 0.5
    shapeLayer.shadowRadius = 2.0

    tipView.layer.insertSublayer(shapeLayer, at: 0)