一个简单的加载动画

2018-08-23  本文已影响112人  _Joeyoung_

先介绍下写此库的初衷吧,常用的第三方加载动画库拓展很好,但是查看自己的项目,除了加载动画其他功能皆无使用。综合考虑,实现逻辑不难,索性自己写一个轻量级的吧。

我给该库的定义是:一个简便的加载动画,没有多余的功能。

使用方法:

直接调用类方法 [QYProgressHUD show] 来展示加载动画, 调用类方法 [QYProgressHUD dismiss] 隐藏动画.
/**
show loading request animation.
*/
+ (void)show;
/**
dismiss loading animation.
*/
+ (void)dismiss;

Example:

// 显示加载动画
[QYProgressHUD show];
// 隐藏加载动画
[QYProgressHUD dismiss];

效果:

浅析QYProgressHUD:

当调用类方法 show 展现动画时,先执行单例方法,返回单例对象;然后调用实例方法 qy_startAnimating 添加加载动画。
+ (void)show {
    [[self sharedInstance] qy_startAnimating];
}
因为实例方法qy_startAnimating中要进行视图添加、动画等操作,所以包裹在主线程中执行的。
    dispatch_async(dispatch_get_main_queue(), ^{
        ...
    });
单例新建一个Window, 无需addSubview,默认创建是被添加到屏幕最上层的。只需要设置对应的 hidden = NO 即可显示出来。
如果我们创建出的UIWindow需要处理键盘事件, 可以将其设置为KeyWindow。KeyWindow是被系统设计用来接收键盘和其他非触摸事件的UIWindow。可以通过 makeKeyWindowresignKeyWindow 用来设置。
调用类方法dismiss移除动画,先执行单例方法,返回单例对象;然后调用实例方法qy_stopAnimating移除加载动画;该方法主要做了移除视图等操作。
+ (void)dismiss {
    [[self sharedInstance] qy_stopAnimating];
}
这个简单的库支持Cocoapods。
pod 'QYProgressHUD'

源码放在GitHub上了,想查看的小伙伴可以->戳这里。


千里之行,始于足下。

上一篇 下一篇

猜你喜欢

热点阅读