什么是IBDesignable / IBInspectable?
IBDesignable和IBInspectable是Interface Builder使用的属性,但与IBOutlet和IBAction也是属性不同, IBInspectable和IBDesignable用于直接在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