哦哦,切克闹,又来分享了,EveryBody 看过来
这次 来谈谈项目中经常遇到的一个功能
iOS runtime 运行时( - 俗谈)
iOS runtime 运行时( 二 深谈)
iOS runtime 运行时( 三 深谈)
iOS runtime 运行时( 四 深谈)
在View上 加载 LoadingView,这是当你界面没有变化
,而你在做数据处理时,需要给用户添加的动画提示,我
们今天用Runtime 来实现一个类别,来方便的添加 这个
LoadingView,我们用 MBProgressHUD 这个常见的 加
载动画来实现,如果你有别的 动画,也可以类似的方法写
新建一个类别文件 UIView+FYLoadingView
.h 文件
#import <UIKit/UIKit.h>
@interface UIView (FYLoadingView)
/**
* message 可以 为 空
*/
-(void)showLoadingViewWithMessage:(NSString*)message;
/**
* message 为空,会 马上 消失
message 不为空,会 先显示 文字,延迟 消失
*/
-(void)stopLoadingViewWithMessage:(NSString*)message;
@end
.m 文件
#import "UIView+FYLoadingView.h"
#import "MBProgressHUD.h"
#import <objc/runtime.h>
static const void *kHttpRequestHUDKeyFY = @"kHttpRequestHUDKeyFY";
@interface UIView ()
@property(nonatomic,strong)MBProgressHUD *progressHUDFY;
@end
@implementation UIView (FYLoadingView)
// 设置 属性的 Getter方法,利用Runtime 来添加这个属性
-(MBProgressHUD *)progressHUDFY
{
MBProgressHUD *HUD = objc_getAssociatedObject(self, &kHttpRequestHUDKeyFY);
if (HUD == nil)
{
HUD = [[MBProgressHUD alloc] initWithView:self];
[self addSubview:HUD];
objc_setAssociatedObject(self, &kHttpRequestHUDKeyFY, HUD, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
}
return HUD;
}
// 然后 就是 出现动画 和 隐藏动画了
-(void)showLoadingViewWithMessage:(NSString*)message
{
if (message) {
self.progressHUDFY.labelText = message;
}else
{
self.progressHUDFY.labelText = @"";
}
[self.progressHUDFY show:YES];
}
-(void)stopLoadingViewWithMessage:(NSString*)message
{
if (message.length)
{
self.progressHUDFY.labelText = message;
[self.progressHUDFY hide:YES afterDelay:.5];
}
else
{
[self.progressHUDFY hide:YES];
}
}
@end
这样子,我们的 类别文件 就写完了
调用的时候 很简单的
只要引用头文件 #import "UIView+FYLoadingView.h"
如果实在 UIViewController 里面,调用是这样的
动画出现
[self.view showLoadingViewWithMessage:@"加载中"];
动画消失
// 直接消失
[self.view stopLoadingViewWithMessage:@""];
// 先显示字,延迟消失
[self.view stopLoadingViewWithMessage:@"网络不给力"];
好的 ,今天就分享到这里,不知对大家有帮助没有,喜欢就给个 喜欢吧