创建同名的UIView文件和Xib文件。
1、将Xib文件的File's Owner -> Custom class -> Class属性设置为同名的类。
2、将Xib文件的自定义View-> Custom class -> Class属性设置为同名的类。
注意:
1、通过xib文件来自定义控件是,不会调用init,initWithFrame:方法;
2、如果不指定自定义View的Custom class为同名类,则不会执行initWithCoder,awakeFromNib方法
XIB加载顺序
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
| + (CustomView *)instanceWithFrame:(CGRect)frame { CustomView *view = (CustomView *)[[NSBundle mainBundle] loadNibNamed:@"CustomViewXib" owner:nil options:nil][0]; view.frame = frame; return view; }
+ (instancetype)customXiBView{ NSString *className = NSStringFromClass([self class]); return [[[NSBundle mainBundle] loadNibNamed:className owner:self options:nil] firstObject]; }
- (id)initWithCoder:(NSCoder *)aDecoder { self = [super initWithCoder:aDecoder]; if (self) { } return self; }
- (void)awakeFromNib { [super awakeFromNib]; }
- (void)willMoveToSuperview:(UIView *)newSuperview { if (newSuperview) { } }
- (void)layoutSubviews { [super layoutSubviews]; }
|
PS:在连线的时候,object一定要选择,你连线的view,而不是 File's Owner
使用XIB 自定义UIView,并可AutoLayout
[iOS UI] 如何通过xib创建自定义UIView并在xib中使用
http://www.jianshu.com/p/7d59b9420bba
http://www.jianshu.com/p/371b1a195fb9
init方法与xib区别
自定义控件(通过代码或者xib文件)
IOS Xib使用——Xib表示局部界面
通过 XIB 加载 UIView