iOS开发iOS实战iOS 控件定制

Xib使用之自定义弹框控件

2017-02-27  本文已影响429人  谁是黄子明

一、关于xib

xib和nib

xib文件可以被Xcode编译成nib文件,xib文件本质上是一个xml文件,而nib文件就是编码后的二进制文件,该文件将视图等控制对象封装了起来,而在程序运行起来后,这些对象会被激活。(摘录

老规矩先看图~~

弹框合集1 弹框合集2

对于一款商城App来说,高度定制弹框是少不了了,以上是我项目中部分使用到的弹框控件

二、如何来创建

1.先创建一个View,继承自UIView,你会发现创建View的时候是不能同时创建Xib文件的,需要我们单独来创建。(本人觉得苹果需要加上这个功能)。

创建自定义View

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

创建Xib文件

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

绑定View

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

提示框View

      像图中一样,按层次布好局,通常我会在.m文件里新建一个匿名分类,控件的属性都放在分类里,头文件提供一个加载View的方法就OK了。

三、如何使用

      使用提示框先弄清楚两个问题  1.提示框是要显示在哪里。2.提示框需要干嘛。弄清楚这两个问题,最后就得到下面这个方法。

通过加方法创建提示框

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

自定义View.h文件

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

方法的实现

四、需要注意的地方

1.命名要一致。标红框的地方~~~

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

选中控件,点击右键,❌ 删除连线

3.约束问题。。。本人觉得Xib实在是太人性化了,自带约束非常好用。

系统默认两条约束,当前视图对应父视图顶部和左边的距离。 因为提示框的Size是始终一样的,删除BackView所有的约束就可以保证位置始终在屏幕最中间。如有不理解可自行将鼠标移动到红框框的地方,相信你会明白的。

五、复杂弹窗功能实现 

举个栗子。。。登录、注册、忘记密码弹框!(写的可能有点乱  - - !!!)

登录、注册、忘记密码弹框

注意,写法有一点点不同,大致思路还是不变,上面的普通弹框是用block回调,登录弹框使用的是代理。要根据实际使用场景来灵活运用。

普通弹框在不同的场景需要触发的不同事件,比如是要添加某个商品,按钮点击事件就是添加商品,删除商品就是删除事件,像这种比价灵活的事件就用block来回调,代码阅读性比较高;

而登录、注册弹框就不同了,很多界面跟功能需要用户先登录,基类控制器提供一个弹出登录框(addLoginView)的方法,把基类控制器设为LoginAndRegistView的代理,实现LoginAndRegistView代理方法,子类的控制器可根据界面要求是否重写代理方法。(例如跳转到某个界面)

关于基类控制器 配合我之前写的开发框架可能容易理解一点。

Demo里有模拟过程

demo

结束语

文中有些效果需要有实际的数据才好实现,希望理解一下,实现过程基本一样,多带个参数就行,包含该弹框所有属性的数据,可以是字典,可以是model,然后用带参block回调到控制器中。

这里大概只是提供了个思路,讲了一下Xib的使用,其使用技巧还是要靠平时多练多看。看到一些好用的东西自己试着写一下,不能总用别人的轮子,自己造的粗糙点也没关系啊~~

QQ: 893422739

技术讨论群(PP-iOS学习交流群):323408051  欢迎萌新加入讨论学习,也欢迎大神指点问题。

ps:我在里面划水!  <群昵称:居然说我昵称太长>

对项目中如有写的不对或是有不理解的地方欢迎骚扰我。

项目地址:https://github.com/Hziming/ZMCustomView.git觉得有帮助的还望点颗星来支持一下!!!

上一篇 下一篇

猜你喜欢

热点阅读