首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

iOS ActivityIndicatorView 轉動時禁用頁面交互:覆蓋透明視圖法

     編輯:程式設計綜合問答

方案

在開始網絡請求時,創建一個**全屏半透明/透明 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;
}

優點

  • 簡單可靠,不需遍歷子視圖禁用 `userInteractionEnabled`。
  • 可自定義背景色、轉圈樣式、提示文字。
  • 自動適配橫豎屏、安全區域。

替代方案

  • `UIApplication.sharedApplication.beginIgnoringInteractionEvents()`(iOS 13 棄用)。
  • 第三方庫:MBProgressHUD、SVProgressHUD、PKHUD(內部同理)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved