Xib使用之自定义弹框控件
一、关于xib
xib和nib
xib文件可以被Xcode编译成nib文件,xib文件本质上是一个xml文件,而nib文件就是编码后的二进制文件,该文件将视图等控制对象封装了起来,而在程序运行起来后,这些对象会被激活。(摘录)
老规矩先看图~~


对于一款商城App来说,高度定制弹框是少不了了,以上是我项目中部分使用到的弹框控件
二、如何来创建
1.先创建一个View,继承自UIView,你会发现创建View的时候是不能同时创建Xib文件的,需要我们单独来创建。(本人觉得苹果需要加上这个功能)。

2.创建对应View的Xib文件,命名跟你所创建的View的名字相同


3.绑定View(暂且先这么叫吧~),选中最外层的View,修改Class为自定义的View的类型。

4.自由发挥时刻。(先拿最简单的举例)

像图中一样,按层次布好局,通常我会在.m文件里新建一个匿名分类,控件的属性都放在分类里,头文件提供一个加载View的方法就OK了。
三、如何使用
使用提示框先弄清楚两个问题 1.提示框是要显示在哪里。2.提示框需要干嘛。弄清楚这两个问题,最后就得到下面这个方法。

整个弹框通过加方法构建,点击事件通过两个block 回调到控制器中,

加方法实现:设置基本属性以及简单的UIView动画整个弹框就大功告成了

四、需要注意的地方
1.命名要一致。标红框的地方~~~

2.线一定要拉对, 如果某个控件需要重新拉线的话,一定要先删除原先连接的线,删除也一样。

3.约束问题。。。本人觉得Xib实在是太人性化了,自带约束非常好用。
系统默认两条约束,当前视图对应父视图顶部和左边的距离。 因为提示框的Size是始终一样的,删除BackView所有的约束就可以保证位置始终在屏幕最中间。如有不理解可自行将鼠标移动到红框框的地方,相信你会明白的。

五、复杂弹窗功能实现
举个栗子。。。登录、注册、忘记密码弹框!(写的可能有点乱 - - !!!)

注意,写法有一点点不同,大致思路还是不变,上面的普通弹框是用block回调,登录弹框使用的是代理。要根据实际使用场景来灵活运用。
普通弹框在不同的场景需要触发的不同事件,比如是要添加某个商品,按钮点击事件就是添加商品,删除商品就是删除事件,像这种比价灵活的事件就用block来回调,代码阅读性比较高;
而登录、注册弹框就不同了,很多界面跟功能需要用户先登录,基类控制器提供一个弹出登录框(addLoginView)的方法,把基类控制器设为LoginAndRegistView的代理,实现LoginAndRegistView代理方法,子类的控制器可根据界面要求是否重写代理方法。(例如跳转到某个界面)
关于基类控制器 配合我之前写的开发框架可能容易理解一点。
Demo里有模拟过程

结束语
文中有些效果需要有实际的数据才好实现,希望理解一下,实现过程基本一样,多带个参数就行,包含该弹框所有属性的数据,可以是字典,可以是model,然后用带参block回调到控制器中。
这里大概只是提供了个思路,讲了一下Xib的使用,其使用技巧还是要靠平时多练多看。看到一些好用的东西自己试着写一下,不能总用别人的轮子,自己造的粗糙点也没关系啊~~
QQ: 893422739
技术讨论群(PP-iOS学习交流群):323408051 欢迎萌新加入讨论学习,也欢迎大神指点问题。
ps:我在里面划水! <群昵称:居然说我昵称太长>
对项目中如有写的不对或是有不理解的地方欢迎骚扰我。
项目地址:https://github.com/Hziming/ZMCustomView.git觉得有帮助的还望点颗星来支持一下!!!