美文网首页
iOS系统加载遮盖效果,高度自定义,仿蚂蚁森林加载效果

iOS系统加载遮盖效果,高度自定义,仿蚂蚁森林加载效果

作者: 帅聪哥 | 来源:发表于2018-11-15 14:58 被阅读66次

项目中有个加载遮盖,就是全屏的那种,而且不同页面可以采取不同的加载效果,比如支付宝中蚂蚁森林和蚂蚁庄园的就是不一样的效果。现在我将思路和代码封装了一下
这个是主类,加载遮盖框,一般建议放在控制器父类进行再次封住,本人这里为了展示效果,将其抽出来

/**
 加载页面的遮盖view
 可以扩展多种样式的遮盖
 */
@interface BDLoadingCoverView : UIView

/**为loadingview 做标记,可能一个页面存在多次加载不同接口,针对不同接口灵活判断*/
@property (nonatomic,assign)NSInteger sgin;

@property (nonatomic,weak)id <BDLoadingCoverViewDelegate>delegate;

#pragma mark - 显示遮盖加载
/**
 展示遮盖
 */
- (void)showCoverToView:(UIView*)view;
/**
 注意;当为BDLoadingAnimationImages时,必须要传入图片数组
 */
- (void)showCoverToView:(UIView*)view animation:(BDLoadingAnimationType)animationType;

/**
 消除遮盖
 */
- (void)hideCover;

/**
 添加导航条到coverview 上 一般这种遮盖是满屏的,则在某些需求下可以进行添加导航栏
 比如加载失败后,可以添加一个,以便用户点击返回
 */
- (void)addTopNaviBarWithColorValue:(UIColor*)color;

#pragma mark - 直接展示结果

/**
 根据不同的错误码进行不同的页面展示
 */
- (void)showErrorViewWithErrorNumber:(BDRequestErrorType)errorType;

/**
 根页面进行页面加载的遮盖效果
 @param errorType 错误类型
 @param errorMsg 错误提示语 只针对后台返回的
 */
- (void)showErrorViewWithErrorNumber:(BDRequestErrorType)errorType errorMsg:(NSString*)errorMsg;

@end

可以看出很简单,就是一个显示方法,具体可以看下注释。
目前这里演示效果中自己添加了三种展示效果,

/**
 这里可以根据需求进行扩展
 */
typedef NS_ENUM(NSInteger,BDLoadingAnimationType){
    
    /**系统的加载效果*/
    BDLoadingAnimationSystem,//default
    /**图片动画效果*/
    BDLoadingAnimationImages,
    /**蚂蚁森林加载效果*/
    BDLoadingAnimationMayiSenLing,
    
};

基本用法->
先是模仿普通的加载效果,这里假设有加载失败和正常:

BDLoadingCoverView *cover = [[BDLoadingCoverView alloc]initWithFrame:self.view.bounds];
    cover.sgin = 1;
    [cover showCoverToView:self.view animation:self.type];
    cover.delegate = self;
    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(3.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
        if(self.showFail){
            [cover showErrorViewWithErrorNumber:BDRequestErrorTimeOut errorMsg:@"请求超时"];
            return ;
        }
        [cover hideCover];
    });

在处理失败后,必须要遵守代理,重新请求,大神可以想想如何在父类直接再次请求,本人之前试过很多次,发现不大好处理,就直接将重新加载等操作用代理回掉出来了。

#pragma mark - BDLoadingCoverViewDelegate
- (void)coverViewBackAction:(BDLoadingCoverView *)loadView
{
    [self.navigationController popViewControllerAnimated:YES];
}

- (void)coverViewReloadAction:(BDLoadingCoverView *)loadView
{
    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(3.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
        [loadView hideCover];
    });
    //这里还可以处理多个异常情况
    if(loadView.sgin == 1){
        
    }
}

一般情况下,既然是全屏遮盖加载,假如加载失败,则自己给加上了一个返回导航栏,当然了,如果加载的时候保留了系统导航栏的话,就用不上了。但是全屏加载或许处理起来要方便的多吧。
这样下来,就轻轻松松实现了加载效果咯。附上下载链接
这个是展示效果:

QQ20181115-141113-HD.gif

喜欢的话点个赞吧!

相关文章

  • iOS系统加载遮盖效果,高度自定义,仿蚂蚁森林加载效果

    项目中有个加载遮盖,就是全屏的那种,而且不同页面可以采取不同的加载效果,比如支付宝中蚂蚁森林和蚂蚁庄园的就是不一样...

  • Android自定义View(3)画两个好玩的数据加载进度缓冲控

    1、仿58同城数据加载缓冲控件动画效果 先看下效果图: #######1.1 实现步骤拆解 (1)自定义一个Sha...

  • Dialog

    自定义一些常见的Dialog效果,居中显示、顶部显示、仿IOS版淘宝、回弹效果、宽度和高度占屏比等,先看效果。 一...

  • 自定义网络加载窗效果

    先来看一下效果图: 1.加载窗里面的元素可以自定义2.两种效果示例:①系统的菊花效果 ②自定义图片效果3.用法简单...

  • 自定义LoadingView

    自定义View系列四 仿58同城加载动画效果https://www.jianshu.com/p/b06a714815c0

  • iOS第三方总结

    iOS总结 1.网络封装, 各种加载效果,实现界面先要考虑刷新加载 2.自定义控件坐标用父坐标来写,不要写死 3....

  • 最简单的状态切换布局

    功能简介 正在加载数据 数据加载失败 数据加载为空 网络加载失败 重试点击事件 支持自定义布局 效果图展示 最简单...

  • Loading对话框

    自定义加载对话框效果 可以利用系统的ProgressBar自定义图片实现loading的圆环其中修改属性indet...

  • iOS_UITableViewCell上加载网页

    本文实现的效果是在某个TableViewCell上加载UIWebView,加载完成后高度正常显示. 1.属性 2....

  • android 仿iphone 头像效果

    仿iOS头像选择效果 今天分享一个《仿iOS头像选择效果》的视频课程,主要有下面几点知识点: 自定义圆形Image...

网友评论

      本文标题:iOS系统加载遮盖效果,高度自定义,仿蚂蚁森林加载效果

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