Swift51.com
Swift 头像
Swift  2016-11-16 16:37

Swift 自定义 UIAlertController 控件 JRAlertController

回复:0  查看:8446  感兴趣:155  赞:0  

JRAlertController

JRAlertController:基于apple的UIAlertController控件api,用swift重新打造的UI控件,更符合主流app的风格。

JRAlertController总体效果图

Swift 自定义 UIAlertController 控件 JRAlertController

UIAlertController 历史

在日常iOS开发中,我们经常能遇到这种情况(我们需要在某个地方让用户做一个选择),比如说:一个博客,点击右上角的按钮后,你可以执行“修改博客”、“删除博客”两个操作。既然是这么常用的操作,Apple当然给我们提供了常用的控件,那就是UIAlertController。

UIAlertController自iOS8出现,在那之前,我们用的是UIAlertViewUIActionSheet。iOS8之后,UIAlertViewUIActionSheet合并为UIAlertController,并以一个style属性来区分原来的UIAlertViewUIActionSheet的作用,还有就是用闭包回调的方式代替了之前的代理(我觉得闭包回调的方式写起来方便多了)。

UIAlertController 不足

那么既然UIAlertController已经是在iOS8优化后的控件(至少api上优化了),那么为何还来个JRAlertController呢?

在开发中我们会发现,UIAlertController有以下几个不足之处:

1.无论是alert还是sheet下的界面,边角过于圆滑,尤其当stylesheet的时候,从底部弹出来那么一个过于圆滑的界面,反正我不觉得好看,不信你看微博、微信这些主流app是怎么做的
微博的效果:

Swift 自定义 UIAlertController 控件 JRAlertController

2.点击背景部分,无法dismiss UIAlertController

3.alert样式下,添加过多的UITextFieldAction后,界面显示丑陋。(虽然不会有这种需求,也不该在UIAlertController过量添加,毕竟UIAlertController适用于”短暂”操作,但是过多添加后,界面确实不好看,后面会有效果图)

基于以上几点不足,我认为足以自定义一个控件来代替UIAlertController,所以JRAlertController诞生了。

相关开源代码