用xib自定义 可以在xib中使用的view
本文将实现一个自定义view,大致如下:
上面是一个label,下面是一个slider,移动滑块,label文字会根据滑块的变化而变化。
1)自定义一个view,然后创建一个基于UIView的xib文件,然后在xib中添加label和slider,添加AutoLayout;
2) 设置xib文件的File’s Owner类型为自定义view的类型;具体操作如下:
3) 重写自定义view的initWithCoder:方法
- (instancetype)initWithCoder:(NSCoder *)aDecoder
{
self = [super initWithCoder:aDecoder];
if (self)
{
//获取用xib自定义的view
UIView *containerView = [[NSBundle mainBundle] loadNibNamed:@"CustomXibView" owner:self options:nil].lastObject;
[self addSubview:containerView];
//如果是从代码层面开始使用Autolayout,需要对使用的View的translatesAutoresizingMaskIntoConstraints的属性设置为NO.
//即可开始通过代码添加Constraint,否则View还是会按照以往的autoresizingMask进行计算.
//而在Interface Builder中勾选了Ues Autolayout,IB生成的控件的translatesAutoresizingMaskIntoConstraints属性都会被默认设置NO.
[containerView setTranslatesAutoresizingMaskIntoConstraints:NO];
//添加约束
NSDictionary *viewDictionary = NSDictionaryOfVariableBindings(containerView);
NSArray *horizontalConstraints = [NSLayoutConstraint constraintsWithVisualFormat:@"H:|-0-[containerView]-0-|" options:NSLayoutFormatAlignAllBaseline metrics:nil views:viewDictionary];
NSArray *verticalConstraints = [NSLayoutConstraint constraintsWithVisualFormat:@"V:|-0-[containerView]-0-|" options:NSLayoutFormatAlignAllBaseline metrics:nil views:viewDictionary];
[self addConstraints:horizontalConstraints];
[self addConstraints:verticalConstraints];
}
return self;
}
4)然后就可以在其他xib文件里使用这个自定义的view了。