使用IBInspectable在选定状态下的UIButton边框颜色

Cli*_*rum 2 uibutton ios swift swift-extensions ibinspectable

我正在使用像这样的Swift扩展@IBInspectable来设置边框颜色UIButton:

extension UIButton {
  @IBInspectable var borderWidth: CGFloat {
    get {
      return layer.borderWidth
    }
    set {
      layer.borderWidth = newValue
      layer.masksToBounds = newValue > 0
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

...但我也想拥有按钮状态的selectedBorderColor属性.Selected.这可能是这样的扩展吗?我是否必须以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
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

提前致谢.

Ren*_*tus 5

您可以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
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

并使用 button.selected = true