Ziank的技术博客

应用提示弹窗

iOS中要弹出和AndroidToast差不多的提示,并不困难,也有着诸多的第三方库可以使用,但是有些时候我们还是需要自己看一下如何进行实现,比如我们最近的需求,需要在应用进入前台时弹出一个提示,提示中包含有可点击的按钮,那么大部分的第三方库就不支持了。

其实这个问题并不复杂,反而非常简单,因为只需要找到最顶层的window,把我们要进行弹窗的UIView加上去就可以了。而获取顶层window的代码如下:

1
2
3
4
5
6
7
8
- (UIWindow *)getTopWindow {
UIWindow *keyWindow = [UIApplication sharedApplication].keyWindow;
if (!keyWindow) {
// 有可能keyWindow不存在
keyWindow = [UIApplication sharedApplication].windows.firstObject;
}
return keyWindow;
}

调用这个方法,就可以获取到顶层window,获取到之后,就可以使用addSubview:添加自定义的View了,不要忘记在添加之后,使用bringSubviewToFront:把自定义View放在最上层。

1
2
3
UIWindow *topWindow = [self getTopWindow];
[topWindow addSubview:customView];
[topWindow bringSubviewToFront:customView];

如此就可以实现我们弹出含有ButtonUIView的需求了。

弹窗测试页面

注意:不要在viewDidLoad中进行弹窗,有可能会无法弹出,因为这个View还没有出现,当它出现时可能会盖住弹出的View。

至于弹出之后如何进行消失,只需要一个dispatch_after就可以了,这里也就不再多说。