SVProgressHUD 是強大的toast工具,但有些情況下會失效。個人遇到的情況是從相冊選擇照片,返回到上一級頁面時,SVProgressHUD就會失效。
解決方法是更改SVProgressHUD默認配置:
[SVProgressHUD setMaxSupportedWindowLevel:NSIntegerMax];
[SVProgressHUD setContainerView:[UIApplication sharedApplication].delegate.window];
導致該問題的原因是:
SVProgressHUD文件中有一個frontWindow對象,負責承載toast內容。而該對象需要滿足以下條件才會不為空:
遍歷UIApplication.sharedApplication.windows,其中window的screen是UIScreen.mainScreen&window可見&level介於UIWindowLevelNormal和maxSupportedWindowLevel(默認2000)之間&window.isKeyWindow時該window才會賦值給frontWindow。
所以,才有上面的兩行代碼設置,第一行是設置level為最大整數,第二行是取delegate的window,[UIApplication sharedApplication].delegate.window不會為nil。
...