开源项目:MMPopupView

前言


弹出框组件应该是绝大多数应用都少不了的(只有极少数精心设计的APP会用不到) 当然我们的APP也不例外 之前我们APP的弹出框组件是我用pop写的 可是后来发现与系统原生动画有些冲突(pop内部用到了CATransaction 导致跟系统动画同时发生时会有问题) 所以上周花了大半天时间重写了一下MMPopupView这个组件

因为新写的组件完全是用Masonry写的 我觉得是个非常好的示例教程 结合之前我写的Masonry入门教程 应该可以更好的理解和运用Masonry/Autolayout 所以我又花了一点时间重新整理成了一个简单的开源库 有兴趣的朋友可以研究一下

运行的demo可以在这里查看

介绍


整体的组成大概就是这个样子

MMPopupWindow就是用来显示所有弹出框的容器 相对直接显示在当前UIWindow上来说 弄个独立的Window出来当容器的会更好

MMPopupView就是弹出框的基类 所有的弹出框只要继承自这个类 就具备了显示的能力 用户只要关注于弹出框本身的表现就行了

MMAlertViewMMSheetView都是我提供的基于MMPopupView的简单组件 可以直接拿来用 而且都是高度可定制的(这个稍后会介绍)

MMPopupWindow

MMPopupWindow的定义如下

很简单 只有一个属性touchWildToHide用来控制是否可以点击非弹出框的地方来使弹出框消失 还有一个cacheWindow的方法来预加载MMPopupWindow 防止第一次使用的时候顿卡

另外还有两个用于显示和隐藏背景色的方法 这个在自定义动画的时候会用到

MMPopupView

MMPopupView的定义如下

使用起来很简单 定义好自己的view 然后调用下面的方法就好了

你也可以指定显示在某个UIView之上

默认提供了三种类型 对应三种动画效果

当然你也可以自己定义想要的动画效果 只要重载下面两个block就行了

同时提供了动画的回调 可以直接指定block或者直接调用方法

MMAlertView

MMAlertView就是UIAlertView的替代品 接口如下

分别对应下面三种形式

同时提供一个全局的配置类 可以充分的自定义

MMSheetView

MMSheetView就是UISheetView的替代品 接口如下

同时提供一个全局的配置类 可以充分的自定义

MMPopupItem

MMPopupItem是用于MMAlertViewMMSheetView的动作对象(对应按钮) 定义如下

使用方式如下

自定义


除了使用MMAlertViewMMSheetView之外 比如我们的应用中会用到输入验证码的提示框和日期的选择框 都可以用MMPopupView来轻松实现

小结


源码和Demo请点这里

更多的细节欢迎运行demo 或者查看源代码 有任何问题欢迎提出来大家一起讨论研究 :)

1 1 收藏 评论

可能感兴趣的话题



直接登录
跳到底部
返回顶部