在開始網絡請求時,創建一個**全屏半透明/透明 UIView**覆蓋當前窗口,上面放 `UIActivityIndicatorView`;請求完成移除該視圖。
@property (nonatomic, strong) UIView *loadingOverlay;
- (void)showLoading {
if (self.loadingOverlay) return;
self.loadingOverlay = [[UIView alloc] initWithFrame:[UIScreen mainScreen].bounds];
self.loadingOverlay.backgroundColor = [UIColor colorWithWhite:0 alpha:0.3];
self.loadingOverlay.userInteractionEnabled = YES; // 關鍵:攔截觸摸
UIActivityIndicatorView *spinner = [[UIActivityIndicatorView alloc] initWithStyle:UIActivityIndicatorViewStyleWhiteLarge];
spinner.center = self.loadingOverlay.center;
[spinner startAnimating];
[self.loadingOverlay addSubview:spinner];
[[UIApplication sharedApplication].keyWindow addSubview:self.loadingOverlay];
}
- (void)hideLoading {
[self.loadingOverlay removeFromSuperview];
self.loadingOverlay = nil;
}