ios Xib 使用技巧

3,225 阅读3分钟

这是我参与8月更文挑战的第14天,活动详情查看:8月更文挑战
分享一些xib使用的技巧,xib或者storyboard在开发中可以提高开发效率。至于说影响,冲突所以具体开发还得看实际情况,和团队要求

1. storyboard 使用

对于一些简单的应用或者demo,我们可以在storyboard上快速构建简单的逻辑 image.png

  • 添加导航控制器

image.png

  • 添加tabbar控制器

image.png

  • 添加tabbar子控制器

image.png

  • 添加依赖关系

image.png

  • 添加3个子控制器

image.png

  • 关联控制器

image.png

2. stackView的使用

image.png

我们让stackView剧中显示,点击button的时候不断切换descLabel的显示和隐藏

image.png
我们添加个背景方便观察,desc隐藏后还是剧中显示 image.png

  • 这样我们可以干很多事,比如某一些Cell的某一项控件的显示和隐藏,改变后会自动刷新布局layout,对于一些复杂的情况我们甚至可以嵌套使用stackview。其实在安卓或者h5页面早就有这样的控件了,个人感觉stackView配合xib使用还是挺方便的。

image.png 比如座位这样的页面,时间有限的情况下使用stackView也是可以满足需求,当然最后还是使用collectionView,更方便拓展。

3. UIScrollerView的使用

  • 添加scrollerView

image.png

  • 去除勾选,不用系统的contentView布局。

image.png

  • 添加自定义contentView image.png

  • 小提示这里我们可以设置自己需要的内容视图的高度,或者你根据比例进行调试。

image.png

  • 这里上面的是比例后的高度,下面是比例。这里内容视图的具体高度就是 700+ 当前控制器高度*0.001 差不多等于700.(如果当前屏幕大于700,就会留白)

image.png

  • 我们添加这个约束作为属性,进行判断当前判断当前控制器是否大于我们默认值,大于的话直接使用屏幕高度

image.png

  • 比如下面的页面没什么复杂逻辑,展示的页面这个时候使用xib,内容视图作为scrollerView差不多一上午就搞定了。

image.png

4. xib嵌套xib使用

我们用代码开发的时候经常会进行复用,那么xib是否可以复用呢?我们创建一个view,并选择自定义尺寸。

image.png

  • 我们添加一些控件,并xib大小设置为300-138

image.png 我们这个时候选择当前视图Owner为我们的testView,而不是View继承。

image.png

我们连线,把这个view作为mainView添加属性变量。 image.png

  • 之后我们知道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;

}

image.png 效果

image.png

5. 总结

有的人不太喜欢使用xib,但是还是比较有必要了解的。个人或者小的团队使用起来效率会高很多,至于后面的迭代或者修改也还好。一些页面展示或者简单逻辑使用xib可以提高效率,个人感觉可读性貌似更高毕竟可视化的。小公司一个人负责好几个项目,就完事了😂。