美文网首页
iOS 如何良好的避免加载框同时弹出

iOS 如何良好的避免加载框同时弹出

作者: wkw0913 | 来源:发表于2023-03-22 09:35 被阅读0次

iOS中一个页面 同时有多个请求时,每个请求都弹出加载中弹框的话,
肯定不合适。当然我们每个人都有不同的方法来处理这种情况,有人使用disaptch_group组来处理,只有当组内请求完成时,才隐藏加载框。
有人使用单例类的形式创建加载框,这里我们说另外一种方法来解决这个问题。

首先给keywindow视图添加一个数组属性hideLoadArr,
1.当调用显示第一个加载框时,我们将它添加到keywindow上,
并添加到hideLoadArr数组里。

2.后面继续调用显示框时,我们会先判断hideLoadArr的数量是否大与0。
大于0直接添加到数组中,不进行直接显示,
如果等于0,重复第一次操作。

3.代码示例如下:

+(void)showLoadingType:(LYPLoadingType )loadType {
    LYPLoadingView *loadingView = [[LYPLoadingView alloc] initWithLoadingType:loadType];
    UIView *keyView = [self getKeyWindow];
   
     if(keyView.hideLoadArr.count>0){
         [keyView.hideLoadArr addObject:loadingView];
     }else{
         [self addLoadView:loadingView];
         [keyView.hideLoadArr addObject:loadingView];
     }
}

4.进行弹框隐藏时,首先判断hideLoadArr的数量是否大于0,
大于0移除加载框,并从hideLoadArr数组中移除该对象。
接下来继续判断hideLoadArr数组是否仍然大于0,
若大于0,则调用 [self addLoadView:loadingView];
将其显示在keywindow上:

 +(void)hideLoading {
    UIView *keyView = [self getKeyWindow];
    if(keyView.hideLoadArr.count >0){
         UIView *loadV = keyView.hideLoadArr.firstObject;
        [loadV removeFromSuperview];
        [keyView.hideLoadArr removeObject:loadV];
    }
    if(keyView.hideLoadArr.count>0){
        UIView *loadV = keyView.hideLoadArr.firstObject;
        if([keyView.hideLoadArr.firstObject isKindOfClass:[LYPLoadingView class]]){
            [self addLoadView:(LYPLoadingView *)loadV];
        }else{
            [self addLoadCustomView:loadV];
        }
       
    }
}


参考demo地址:https://github.com/wkwl/LYPLoad.git

相关文章

网友评论

      本文标题:iOS 如何良好的避免加载框同时弹出

      本文链接:https://www.haomeiwen.com/subject/twmvrdtx.html