1.IB_DESIGNABLE / IBInspectable 关键字解释
“所见即所得”的思想,自定义的代码实时渲染到Interface Builder中。通过@IBDesignable和@IBInspectable两个指令来完成。通过@IBDesignable告诉Interface Builderg关联的类可以实时渲染到界面中,无论我们drawRect里面多么复杂,自定义有多复杂,Xib / Storyboard都可以把它编译出来,并且渲染展示出来。但是这个类必须是UIView或者NSView的子类
IB_DESIGNABLE的工作原理:当使用IB_DESIGNABLE关键字后,Xib/StoryBoard会在不运行整个程序的情况下,把这个View代码编译跑一遍,由于没有程序上下文,所有的编译就只在这个view的代码中进行
2. initWithCoder与loadNibName异同点
1、 initWithNibName要加载的Xib的类为ViewController的类
2、loadNibNamed要加载的Xib的类为NSOjbect它们的加载方式也不同:
initWithNibName方法:是延迟加载,这个View上的控件是 nil 的,只有到需要显示时,才会不是 nil;
loadNibNamed是立即加载,调用这个方法加载的xib对象中的各个元素都已经存在。
3.注意点
用这个特性最好是iOS8 + Swift,OC或者iOS7都会出现Failed to update而且无解
网友评论