在Storyboard中設定borderColor

kim_jin發表於2017-12-13

經常使用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

相關文章