TARGET_INTERFACE_BUILDER,预编译宏,用于判断是否在IB

1
2
3
4
5
6
7
- (void)connectToMyServer {
#if !TARGET_INTERFACE_BUILDER
// connect to the server
#else
// don't connect; instead, draw my custom view
#endif
}

IB_DESIGNABLE,在UIView自定义类头部,将会实时绘制UIView到Interface Builder canvas。(示例是重载了drawRect方法实现的)

IBInspectable,在@property属性指定,将能够在IB里控制参数变化,支持的类型包括:boolean, integer or floating point number, string, localized string, rectangle, point, size, color, range, and nil.

局部调试,不需要启动App,还能够指定断点(有点意思)
Editor > Debug Selected Views

由于在 Interface Builder 中呈现自定义视图不会有应用程序的完整上下文,你可能需要生成模拟数据以便显示,这里有两个地方可以处理:

  • prepareForInterfaceBuilder():此方法与你代码的其余部分一起编译,但只有当视图正在准备在 Interface Builder 显示时执行。

  • TARGET_INTERFACE_BUILDER:#if TARGET_INTERFACE_BUILDER 预处理宏在 Objective-C 或 Swift 下都是工作的,它会视情况编译正确代码:

http://nshipster.cn/ibinspectable-ibdesignable/