您的位置:首页 > 产品设计 > UI/UE

用xib自定义 可以在xib中使用的view

2015-12-24 17:41 435 查看

用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了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  uiview 自定义view xib