如何使用阴影视图 iOS swift 实现这种角半径?

How can i achieve this kind of corner redius with shadow view iOS swift?

我正在尝试制作一个左上角半径和右下角半径带阴影的设计。当我试图将角半径仅提供给侧阴影或半径未显示时,我能够在 view.But 周围制作阴影也角半径。野兔我做了什么

 extension UIview {
   //corner radius function
       func roundCornersForView(corners:UIRectCorner, radius: CGFloat) {

        DispatchQueue.main.async {
            let path = UIBezierPath(roundedRect: self.bounds,
                                    byRoundingCorners: corners,
                                    cornerRadii: CGSize(width: radius, height: radius))
            let maskLayer = CAShapeLayer()
            maskLayer.frame = self.bounds
            maskLayer.path = path.cgPath
            self.layer.mask = maskLayer
        }
    }


    func setShadow(){
        self.layer.masksToBounds = false
        // set the shadow properties
        self.layer.shadowColor = UIColor.black.cgColor
        self.layer.shadowOffset = CGSize(width: 0, height: 1.0)
        self.layer.shadowOpacity = 0.2
        self.layer.shadowRadius = 4.0
        self.roundCornersForView(corners: [.topLeft, .bottomRight], radius: 20)

    }



}

 /// finally call it table cell


  cell?.BackView.setShadow()

here is the design what i want to do

1) 为什么要编写一个单独的函数来绘制矩形,然后将 cornerRadius 掩码应用于您的视图?将函数的内容替换为:

yourView.layer.masksToBounds = true
yourView.layer.cornerRadius = 20
yourView.layer.maskedCorners = [.layerMinXMinYCorner, .layerMaxXMaxYCorner]

2) 遮罩视图的角并将其 masksToBounds 属性 设置为 true 后,您可以将阴影设置到视图的图层,它会自动环绕圆角如你所愿:-

yourView.layer.shadowOffset = CGSize(width: 0, height: -0.5)
yourView.layer.shadowRadius = 1
yourView.layer.shadowColor = UIColor(red:0.01, green:0.05, blue:0.09, alpha:0.18).cgColor
yourView.layer.shadowOpacity = 0.8

3) 建议在单元格 class 的 awakeFromNib()init() 方法而不是在你的委托方法中,因为它们被调用了很多次,因此 打破了可重用性的全部要点

已经测试了应用阴影的代码,对我来说效果很好。希望这对您有所帮助!