【问题标题】:adding a CAShapeLayer to UIButton with AutoLaout is not show Correctly使用 AutoLaout 向 UIButton 添加 CAShapeLayer 未正确显示
【发布时间】:2018-04-18 00:43:16
【问题描述】:

我想制作一个左上角和左下角半径 = 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 不适合按钮框架,白色位于蓝色后面。蓝色部分是按钮,白色是包含按钮和标签的视图以及其他按钮。 在视图控制器中,我将视图角半径设置为 15

valoraView.layer.cornerRadius = 15

但是视图的半径和路径中 shapelayer 的半径之间存在差异。 所以任何帮助都将不胜感激

【问题讨论】:

  • 为什么不直接设置那两个角的圆角半径呢?不需要形状层,而且在任何情况下,形状层实际上都不会进行任何舍入(它不会掩盖按钮)。

标签: swift uibutton cashapelayer


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多