使用 AutoLaout 向 UIButton 添加 CAShapeLayer 未正确显示

adding a CAShapeLayer to UIButton with AutoLaout is not show Correctly

我想制作一个左上角和左下角半径 = 15 的按钮,所以我制作了这个 class 来实现它

    class pathBUtton:UIBUtton{
       override func layoutSubviews() {
          super.layoutSubviews()
          let shapeLayer = CAShapeLayer()
          let path = UIBezierPath.init(roundedRect: self.bounds, byRoundingCorners: [.topLeft,.bottomLeft], cornerRadii: CGSize.init(width: 15.0, height: 0.0))
          shapeLayer.lineWidth = 5.0
          shapeLayer.fillColor = UIColor.blue.cgColor
          shapeLayer.path = path.cgPath
          shapeLayer.strokeColor = UIColor.clear.cgColor
          self.backgroundColor = UIColor.clear
          self.layer.addSublayer(shapeLayer)
    }

将 IB 中的按钮 class 设置为 pathButton 后,按钮文本未显示,请参见 image 并且 cashapelayer 不适合按钮框架,在蓝色后面看到白色。蓝色部分是按钮,白色部分是包含按钮和标签的视图。 在视图控制器中,我将视图 cornerradius 设置为 15,如下所示

valoraView.layer.cornerRadius = 15

但是路径中视图的半径和shapelayer的半径之间存在差异。 因此,我们将不胜感激

I want to make a button with top left and botton left corner radius = 15

self.button.layer.cornerRadius = 15
self.button.layer.borderWidth = 2
self.button.layer.maskedCorners = [.layerMinXMaxYCorner, .layerMinXMinYCorner]