可使用 @IBInspectable 自訂InterfaceBuilder屬性
例如自訂一個UIView的陰影效果
extension UIView {
/**
陰影效果 位移
*/
@IBInspectable var shadowOffset: CGSize {
get {
return self.layer.shadowOffset
}
set {
self.layer.shadowOffset = newValue
}
}
/**
陰影效果 透明度
*/
@IBInspectable var shadowOpacity: Float {
get {
return self.layer.shadowOpacity
}
set {
self.layer.shadowOpacity = newValue
}
}
/**
陰影效果 半徑
*/
@IBInspectable var shadowRadius: CGFloat {
get {
return self.layer.shadowRadius
}
set {
self.layer.shadowRadius = newValue
}
}
/**
陰影效果 顏色
*/
@IBInspectable var shadowColor: UIColor? {
get {
guard let cgColor = self.layer.shadowColor else {
return nil
}
return UIColor(CGColor: cgColor)
}
set {
self.layer.shadowColor = newValue?.CGColor
}
}
/**
加入陰影效果
*/
func shadow(shadowOffset: CGSize, shadowOpacity: Float, shadowRadius: CGFloat, shadowColor: CGColorRef?)
{
self.layer.shadowOffset = shadowOffset
self.layer.shadowOpacity = shadowOpacity
self.layer.shadowRadius = shadowRadius
self.layer.shadowColor = shadowColor
}
}
參考資料:
http://nshipster.com/ibinspectable-ibdesignable/
http://www.appcoda.com.tw/ibdesignable-ibinspectable/