什么是IBDesignable / IBInspectable?

IBDesignableIBInspectableInterface Builder使用的属性,但与IBOutletIBAction也是属性不同, IBInspectableIBDesignable用于直接在Interface Builder中呈现元素。

WWDC 14 [1]中显示的这些属性首先受Objective-C支持,但现在您也可以与Swift一起使用。

渲染自定义UI组件

IBDesignable属性负责标识从UIView继承的类,该UIView将在Interface Builder中呈现。

例如,我使用IBDesignable创建了一个ImageView定制:

 导入UIKit 
  @IBDesignable类CustomImageView:UIImageView { 
 覆盖func prepareForInterfaceBuilder(){ 
self.layer.cornerRadius = self.bounds.size.width / 2
self.layer.borderWidth = 6
self.layer.borderColor = UIColor.blackColor()。CGColor
self.layer.masksToBounds = true
}
}

您可以在下面看到结果:

但是要获得此结果,我需要在Identity Inspector中将UIImageView设置CustomImageView

通过Interface Builder配置UI组件

IBInspectable是另一个可用于配置您的UI组件(例如)的属性,只需要您在代码中将该属性与该属性一起使用即可:

  @IBInspectable var borderWidth:CGFloat = 6.0 { 
didSet {
self.layer.borderWidth = self.borderWidth
}
}

结果是:

不幸的是, IBInspectable不能与所有类型一起使用,请参见下面的列表,它可以支持:

  • 整数
  • CGFloat
  • 布尔
  • CGPoint
  • CG尺寸
  • CGRect
  • UIColor
  • UIImage

我希望XCode的下一步是创建组件的可能性,将其交付并安装到XCode内部使用的形式与本机Apple组件相同,但是现在,我们需要走另一条路来共享它(例如): GitHub [2],cocoapods [3],Carthage [4]等…

参考文献

[1] https://developer.apple.com/videos/play/wwdc2014/411/

[2] http://github.com

[3] https://cocoapods.org

[4] https://github.com/Carthage/Carthage