在iOS
中要彈出和Android
中Toast
差不多的提示,并不困難,也有著諸多的第三方庫可以使用,但是有些時候我們還是需要自己看一下如何進行實現,比如我們最近的需求,需要在應用進入前臺時彈出一個提示,提示中包含有可點擊的按鈕,那么大部分的第三方庫就不支持了。
其實這個問題并不復雜,反而非常簡單,因為只需要找到最頂層的window
,把我們要進行彈窗的UIView
加上去就可以了。而獲取頂層window
的代碼如下:
- (UIWindow *)getTopWindow {
UIWindow *keyWindow = [UIApplication sharedApplication].keyWindow;
if (!keyWindow) {
// 有可能keyWindow不存在
keyWindow = [UIApplication sharedApplication].windows.firstObject;
}
return keyWindow;
}
調用這個方法,就可以獲取到頂層window
,獲取到之后,就可以使用addSubview:
添加自定義的View了,不要忘記在添加之后,使用bringSubviewToFront:
把自定義View放在最上層。
UIWindow *topWindow = [self getTopWindow];
[topWindow addSubview:customView];
[topWindow bringSubviewToFront:customView];
如此就可以實現我們彈出含有Button
的UIView
的需求了。
注意:不要在viewDidLoad
中進行彈窗,有可能會無法彈出,因為這個View還沒有出現,當它出現時可能會蓋住彈出的View。
至于彈出之后如何進行消失,只需要一個dispatch_after
就可以了,這里也就不再多說。
彈窗測試頁面