iOS中一個頁面 同時有多個請求時,每個請求都彈出加載中彈框的話,
肯定不合適踢京。當然我們每個人都有不同的方法來處理這種情況色建,有人使用disaptch_group組來處理哺呜,只有當組內請求完成時,才隱藏加載框箕戳。
有人使用單例類的形式創(chuàng)建加載框弦牡,這里我們說另外一種方法來解決這個問題。
首先給keywindow視圖添加一個數組屬性hideLoadArr漂羊,
1.當調用顯示第一個加載框時驾锰,我們將它添加到keywindow上,
并添加到hideLoadArr數組里走越。
2.后面繼續(xù)調用顯示框時椭豫,我們會先判斷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數組中移除該對象呵晨。
接下來繼續(xù)判斷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