iOS之加载等待指示器(工具类)

#import "CXDView.h"

@interface CXDView ()

//动态图
@property (strong, nonatomic) UIImageView *loadingImageView;
//提示文字
@property (strong, nonatomic) UILabel *toastLabel;

@end

@implementation CXDView

#pragma mark - 初始化
- (instancetype)init
{
    self = [super init];
    if (self) {
        [self addSubview:self.loadingImageView];
        [self addSubview:self.toastLabel];
    }
    return self;
}

#pragma mark - 接口方法
//要把loading界面加载到哪个界面上
+ (void)showCXDViewFromSuperView:(UIView *)superView
{
    [self showCXDViewFromSuperView:superView offsetY:0];
}

//要把loading界面从哪个界面上移除
+ (void)removeCXDViewFromSuperView:(UIView *)superView
{
    //在父视图的【所有子视图数组】当中查找
    for (UIView *itemView in superView.subviews) {
        //如果某个子视图是CXDView类型
        if ([itemView isKindOfClass:[CXDView class]]) {
            //将它从父视图中移除
            [itemView removeFromSuperview];
        }
    }
}

//要把loading界面加载到哪个界面上(具体位置多少)
+ (void)showCXDViewFromSuperView:(UIView *)superView offsetY:(CGFloat)offsetY
{
    CXDView *loadingView = [[CXDView alloc] init];
    loadingView.frame = CGRectMake([UIScreen mainScreen].bounds.size.width/2-40, [UIScreen mainScreen].bounds.size.height/2-40+offsetY, 80, 60);
//  PS:由于imageView和label不可操作,且自定义View背景为透明,所以无影响
//  pss:如果控件可操作,超出view范围,则不可以继续操作

    //判断superView上是否已经存在一个CXDView
    //如果已经存在,那么先删除这个CXDView
    [self removeCXDViewFromSuperView:superView];
    //再加载新的View
    [superView addSubview:loadingView];
    //让动态图动起来
    [loadingView.loadingImageView startAnimating];

}

#pragma mark - 懒加载
-(UIImageView *)loadingImageView
{
    if (!_loadingImageView) {
        _loadingImageView = [[UIImageView alloc] init];
        _loadingImageView.frame = CGRectMake(0, 0, 80, 80);
        _loadingImageView.backgroundColor = [UIColor clearColor];
        //设置动态图属性
        _loadingImageView.animationImages = [self getImageArray];
        _loadingImageView.animationDuration = 2.0;
        _loadingImageView.animationRepeatCount = 0;
    }
    return _loadingImageView;
}

//获取图片数组
- (NSArray *)getImageArray
{
    //获取图片名称
    NSMutableArray *imageNameArr = [NSMutableArray array];
    for (int i = 1; i < 16; i++) {
        NSString *imageName;
        if (i<10) {
            imageName = [NSString stringWithFormat:@"loading_animate_0%d",i];
        }else{
            imageName = [NSString stringWithFormat:@"loading_animate_%d",i];
        }
        [imageNameArr addObject:imageName];
    }
    //获取图片数组
    NSMutableArray *imageArr = [NSMutableArray array];
    for (int i = 0; i < 15; i++) {
        NSString *imageName = [imageNameArr objectAtIndex:i];
        UIImage *image = [UIImage imageNamed:imageName];
        [imageArr addObject:image];
    }

    return imageArr;
}

-(UILabel *)toastLabel
{
    if (!_toastLabel) {
        _toastLabel = [[UILabel alloc] init];
        _toastLabel.frame = CGRectMake(0, 90, 80, 30);
        _toastLabel.text = @"片刻即来...";
        _toastLabel.textColor = [UIColor darkGrayColor];
        _toastLabel.font = [UIFont systemFontOfSize:14];
        _toastLabel.textAlignment = NSTextAlignmentCenter;
    }
    return _toastLabel;
}

@end

PS:图片文件需要自己添加

PSS:可以对该类进行封装,方便在请求数据过程中,在界面上显示等待指示,提高用户体验

时间: 2024-10-17 13:09:23

iOS之加载等待指示器(工具类)的相关文章

Android加载网络图片的工具类

ImageView加载网络的图片 HttpUtil.java package com.eiice.httpuimagetils; import java.io.ByteArrayOutputStream; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.URL; import android.graphics.Bitmap; import android.util.Log; /** *

Java加载Properties配置文件工具类

import org.apache.commons.lang3.StringUtils; import org.apache.log4j.Logger; import java.io.InputStream; import java.util.HashMap; import java.util.Map; import java.util.Properties; /** * Created by yang on 2017/1/5. * 静态配置 */ public class Constants

IOS开发UI篇之──自定义加载等待框(MBProgressHUD)

本文转载至 http://blog.csdn.net/xunyn/article/details/8064984 原文地址http://www.189works.com/article-89289-1.html MBProgressHUD 下载地址是: http://github.com/matej/MBProgressHUD 这里介绍一下网友开源的MBProgressHUD类,实现等待框, 一.网上下载  MBProgessHUD 类文件,直接导入到工程即可 二.示例分析 在我的工程中示例如下

iOS UIAlertView中UIActivityindicatorView风火轮提示加载等待

参考:http://stackoverflow.com/questions/18729220/uialertview-addsubview-in-ios7 1.SignInViewController.h #import <UIKit/UIKit.h> @interface SignInViewController : UIViewController<UIAlertViewDelegate>{ UIAlertView *remoteAlertView; } @end 2.Sign

iOS开发项目篇—21抽取工具类

iOS开发项目篇—21抽取工具类 一.抽取宏 把和应用相关的信息抽取出来 App Key:1972915028 App Secret:b255603c4dfd82b4785bf9a808ce2662 回调地址:http://www.cnblogs.com/wendingding/ (1)appkey和回调页面在很多地方都要用到 (2)如果是不同应用的话,只需要把这几个参数换掉就可以了.把它们抽取成一个宏,写到pch文件中. 项目的PCH文件 1 #import <Availability.h>

自定义加载等待框(MBProgressHUD)

一.网上下载  MBProgessHUD 类文件,直接导入到工程即可 二.示例分析 在我的工程中示例如下: 1)在ShowImageViewController.h头文件代码如下: #import <UIKit/UIKit.h> #import "MBProgressHUD.h" @interface ShowImageViewController : UIViewController<MBProgressHUDDelegate> { NSString     

ios UIWebView 加载网页、文件、 html

UIWebView  是用来加载加载网页数据的一个框.UIWebView可以用来加载pdf word doc 等等文件 生成webview 有两种方法,1.通过storyboard 拖拽 2.通过alloc init 来初始化 创建webview,下列文本中 _webView.dataDetectorTypes = UIDataDetectorTypeAll; 是识别webview中的类型,例如 当webview中有电话号码,点击号码就能直接打电话 - (UIWebView *)webView

iOS UIWebView 加载https站点出现NSURLConnection/CFURLConnection HTTP load failed (kCFStreamErrorDomainSSL,

今天在加载https站点的时候遇到如下的错误问题.所以对自己之前写的iOS内嵌webview做了一些修改,可以让它加载http站点也可以让它加载https站点. 下面是我加载https站点的时候出现的错误. error:     NSURLConnection/CFURLConnection HTTP load failed (kCFStreamErrorDomainSSL, -9813) HTTPS 超文本传输安全协议(缩写:HTTPS,英语:Hypertext Transfer Protoc

iOS图片加载到内存中占用内存情况

我的测试结果: 图片占用内存   图片尺寸           .png文件大小 1MB              512*512          316KB 4MB              1024*1024      940KB 16MB            2048*2048      2.5MB 1.11MB         512*568 693KB          320*568          186KB 2.773MB       640*1136        664