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

时间:2018-04-18 00:43:17

标签: swift uibutton cashapelayer

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

    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中的按钮类设置为pathButton后,按钮文本未显示为image,并且 cashapelayer 不适合按钮框架,白色显示为蓝色。蓝色部分是按钮,白色是视图包含按钮,标签是另一个按钮。 在视图控制器中,我已将视图cornerradius设置为15

valoraView.layer.cornerRadius = 15

但是视图的半径与路径中shapelayer的半径之间存在差异。 所以任何帮助都会被贬低

1 个答案:

答案 0 :(得分:2)

  

我想制作一个左上角和左下角半径= 15

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

enter image description here