在Storyboard中设置borderColor

2,382 阅读1分钟

经常使用Storyboard的童鞋们应该比较清楚怎样设置一个View在runtime中的属性,比方说layer.cornerRadiuslayer.borderWidth等。基本上大多数属性都能直接在Keypath中进行设置,除了颜色相关的属性。

办法总是有的,有的童鞋会向恶势力低头,使用代码。

但是,除了使用代码以外,我们可以对UIView或者CALayer进行扩展,这是我从SO上找到的答案,通过extension为UIView或者CALayer添加一个UIColor类型的属性,然后在keypath中设置该属性即可。

UIView版:

// 除了设置color以外,还设置了其他几个属性,就避免keypath要写长
extension UIView { 
  @IBInspectable var cornerRadius: CGFloat { 
    get { return layer.cornerRadius } 
    set { 
      layer.cornerRadius = newValue 
      layer.masksToBounds = newValue > 0 
    } 
} 
  @IBInspectable var borderWidth: CGFloat { 
    get { return layer.borderWidth } 
    set { layer.borderWidth = newValue } 
} 
  @IBInspectable var borderColor: UIColor? { 
    get { return UIColor(cgColor: layer.borderColor!) }
    set { layer.borderColor = newValue?.cgColor } 
  }
}

CALayer版:

extension CALayer { 
  var borderColorFromUIColor: UIColor { 
    get { return UIColor(CGColor: self.borderColor!) } 
    set { self.borderColor = newValue.CGColor } 
  }
}

Circle Image


参考链接:

  1. Change UIButton BorderColor in Storyboard