项目要用提示框,系统的提示框和app主题又不搭只能自己搞一个了,其实搞一个提示框库很简单,下面教大家怎么搞
代码已经上传github: https://github.com/smalldu/ZuberAlert
先上效果:
ZuberAlert
下面简单说下思路。
首先想清楚,我们的弹出框弹出的是一个什么东西 。弹出来得其实也是一个view ,放在一个半透明的view上。 我们这里用一个ViewController来管理 。所以我们的这个弹出框需要继承自UIViewController
下来要想清楚,我们这个view要添加在哪里 , 因为我们这个弹出框不管在哪个页面都可以弹出来 , 所以这边我选择放在UIWindow
上 , 因为要显示在最前面,所以展示出来的时候要加上window.bringSubviewToFront(view)
这两个问题想清楚了以后 , 就可以做了,不就是画一个view上面放一个标题,以歌内容 几个按钮 。然后再布局就行了 。
这里强调一点就是,初始化的时候声明一个对自己的引用
var strongSelf:ZuberAlert?
然后在init方法执行strongSelf = self
相当于retain了一下 强引用 。 不然 点击按钮的方法不会执行。
具体代码很简单就不详细说了,大家可以去github上下载源码 , 核心就一个swift 文件,不到200行代码。
当然你也可以不看代码直接使用。使用方式也很简单
在任何你想alert得地方 一句话搞定
ZuberAlert().showAlert("小提示", subTitle: "这是一个测试的小提示", buttonTitle: "取消", otherButtonTitle: "确认") { (OtherButton) -> Void in
print("执行了确认")
}
第一个按钮式用来取消的 ,内部写好了,第二个按钮的方法可以自定义 。内容写在闭包里就行了。非常方便好用。
这里只是一点小小的功能,抛砖引玉 ,大家可以随便自由发挥,做一个自己的弹出框。
网友评论
把你的代码直接导出来加入工程的时候,此时这个window的值为nil,是为什么啊
我这样添加点击事情,结果就说window为nil,好郁闷,下面的写法就对了
btn.addTarget(self, action: Selector("customAlert"), forControlEvents:.TouchUpInside)
UIApplication.sharedApplication().keyWindow这句话就是拿当前应用的主窗口
不可能没有window的
if let window = UIApplication.sharedApplication().keyWindow as? UIWindow{
放在这里使用window
}