使用IBInspectable,在选定状态下设置UIButton边框颜色

4

我正在使用@IBInspectable来设置一个Swift扩展中的UIButton边框颜色,代码如下:

extension UIButton {
  @IBInspectable var borderWidth: CGFloat {
    get {
      return layer.borderWidth
    }
    set {
      layer.borderWidth = newValue
      layer.masksToBounds = newValue > 0
    }
  }
}

...但我还想为按钮的.Selected状态添加一个selectedBorderColor属性。使用这样的扩展是否可行?或者我必须子类化UIButton并以某种方式检查按钮状态呢?


extension UIButton {
  @IBInspectable var borderWidth: CGFloat {
    get {
      return layer.borderWidth
    }
    set {
      layer.borderWidth = newValue
      layer.masksToBounds = newValue > 0
    }
  }
  //This is what I want to do...
  @IBInspectable var selectedBorderWidth: CGFloat {
    get {
      return layer.borderWidth
    }
    set {
      layer.borderWidth = newValue
      layer.masksToBounds = newValue > 0
    }
  }
}

感谢您的提前帮助。
1个回答

7
你可以像这样子类化UIButton:
class SBButton: UIButton {

    @IBInspectable var borderColor : UIColor = UIColor.whiteColor() {
        didSet {
            self.setNeedsDisplay()
        }
    }

    @IBInspectable var selectedBorderColor : UIColor = UIColor.blackColor() {
        didSet {
            self.setNeedsDisplay()
        }
    }

    override var selected: Bool {
        didSet {
            if selected {
                layer.borderColor = selectedBorderColor.CGColor
            } else {
                layer.borderColor = borderColor.CGColor
            }
        }
    }
}

使用 button.selected = true


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接