如何仅为topLeft和bottomLeft角落获得圆角?

时间:2017-02-07 07:40:48

标签: ios swift

我已经跟踪了其他stackoverflow线程并创建了CAShapeLayer并将其添加到按钮层。

let bazierPath = UIBezierPath.init(roundedRect: button.bounds, byRoundingCorners: [UIRectCorner.bottomLeft, UIRectCorner.topLeft], cornerRadii: CGSize(width: 10.0, height: 10.0 ))
            let shapeLayer = CAShapeLayer()
            shapeLayer.frame = button.bounds
            shapeLayer.path = bazierPath.cgPath
            shapeLayer.strokeColor = UIColor.green.cgColor
            shapeLayer.lineWidth = 1.0
            button.layer.mask = shapeLayer

但问题是我的角落颜色清晰,但我希望它们是绿色的。检查下图中“Mon”和“Fri”的按钮,以便清楚地了解问题。

enter image description here

2 个答案:

答案 0 :(得分:2)

在您的代码中,您忘记将addSublayer添加到主图层contentView.layer.addSublayer(subLayer)以用于示例目的

  let contentView = UIView(frame: CGRect(x: CGFloat(50), y: CGFloat(100), width: CGFloat(200), height: CGFloat(100)))
    self.view.addSubview(contentView)
    let subLayer = CAShapeLayer()
    subLayer.fillColor = UIColor.blue.cgColor
    subLayer.strokeColor = UIColor.green.cgColor
    subLayer.lineWidth = 1.0
    subLayer.path = UIBezierPath(roundedRect: contentView.bounds, byRoundingCorners: [UIRectCorner.bottomLeft, UIRectCorner.topLeft], cornerRadii: CGSize(width: 10.0, height: 10.0 )).cgPath
    contentView.layer.addSublayer(subLayer)

<强>输出

enter image description here

答案 1 :(得分:1)

尝试使用以下功能:

 fun createRoundCorners(corners:UIRectCorner, radius: CGFloat) 
  {
    let borderLayer = CAShapeLayer()
    borderLayer.frame = self.layer.bounds
    borderLayer.strokeColor = // Add your color
    borderLayer.fillColor = UIColor.clearColor().CGColor
    borderLayer.lineWidth = 1.0
    let path = UIBezierPath(roundedRect: self.bounds, 
      byRoundingCorners: corners, 
      cornerRadii: CGSize(width: radius, height: radius))
    borderLayer.path = path.CGPath
    self.layer.addSublayer(borderLayer);
  }