这是我参与8月更文挑战的第14天,活动详情查看:8月更文挑战
分享一些xib使用的技巧,xib或者storyboard在开发中可以提高开发效率。至于说影响,冲突所以具体开发还得看实际情况,和团队要求。
1. storyboard 使用
对于一些简单的应用或者demo,我们可以在storyboard上快速构建简单的逻辑
- 添加导航控制器
- 添加tabbar控制器
- 添加tabbar子控制器
- 添加依赖关系
- 添加3个子控制器
- 关联控制器
2. stackView的使用
我们让stackView剧中显示,点击button的时候不断切换descLabel的显示和隐藏
我们添加个背景方便观察,desc隐藏后还是剧中显示
- 这样我们可以干很多事,比如某一些Cell的某一项控件的
显示和隐藏,改变后会自动刷新布局layout,对于一些复杂的情况我们甚至可以嵌套使用stackview。其实在安卓或者h5页面早就有这样的控件了,个人感觉stackView配合xib使用还是挺方便的。
比如座位这样的页面,时间有限的情况下使用
stackView也是可以满足需求,当然最后还是使用collectionView,更方便拓展。
3. UIScrollerView的使用
- 添加scrollerView
- 去除勾选,不用系统的
contentView布局。
-
添加自定义
contentView -
小提示这里我们可以设置自己需要的内容视图的
高度,或者你根据比例进行调试。
- 这里上面的是
比例后的高度,下面是比例。这里内容视图的具体高度就是 700+ 当前控制器高度*0.001 差不多等于700.(如果当前屏幕大于700,就会留白)
- 我们添加这个约束作为
属性,进行判断当前判断当前控制器是否大于我们默认值,大于的话直接使用屏幕高度
- 比如下面的页面没什么复杂逻辑,展示的页面这个时候使用
xib,内容视图作为scrollerView差不多一上午就搞定了。
4. xib嵌套xib使用
我们用代码开发的时候经常会进行复用,那么xib是否可以复用呢?我们创建一个view,并选择自定义尺寸。
- 我们添加一些控件,并xib大小设置为300-138
我们这个时候选择当前视图Owner为我们的testView,而不是View继承。
我们连线,把这个view作为mainView添加属性变量。
- 之后我们知道xib加载的时候会进行
initWithCoder方法调用,这里主要当前view添加xib的view,大小一致。
-(instancetype)initWithCoder:(NSCoder *)coder
{
if (self = [super initWithCoder:coder]) {
self.bounds = CGRectMake(0, 0, 300, 138);
[[NSBundle mainBundle]loadNibNamed:@"testView" owner:self options:nil];
self.mainView.frame = CGRectMake(0, 0, 300, 138);
[self addSubview:self.mainView];
}
return self;
}
效果
5. 总结
有的人不太喜欢使用xib,但是还是比较有必要了解的。个人或者小的团队使用起来效率会高很多,至于后面的迭代或者修改也还好。一些页面展示或者简单逻辑使用xib可以提高效率,个人感觉可读性貌似更高毕竟可视化的。小公司一个人负责好几个项目,快就完事了😂。