iOS runtime 运行时( 四 深谈)

哦哦,切克闹,又来分享了,EveryBody 看过来
这次 来谈谈项目中经常遇到的一个功能
iOS runtime 运行时( - 俗谈)
iOS runtime 运行时( 二 深谈)
iOS runtime 运行时( 三 深谈)
iOS runtime 运行时( 四 深谈)

在View上 加载 LoadingView,这是当你界面没有变化
,而你在做数据处理时,需要给用户添加的动画提示,我
们今天用Runtime 来实现一个类别,来方便的添加 这个 
LoadingView,我们用 MBProgressHUD 这个常见的 加
载动画来实现,如果你有别的 动画,也可以类似的方法写

新建一个类别文件 UIView+FYLoadingView
.h 文件

#import 

@interface UIView (FYLoadingView)
/**
 * message 可以 为 空
 */
-(void)showLoadingViewWithMessage:(NSString*)message;

/**
 * message 为空,会 马上 消失
   message 不为空,会 先显示 文字,延迟 消失
 */
-(void)stopLoadingViewWithMessage:(NSString*)message;
@end

.m 文件

#import "UIView+FYLoadingView.h"
#import "MBProgressHUD.h"
#import 
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:@"网络不给力"];

好的 ,今天就分享到这里,不知对大家有帮助没有,喜欢就给个 喜欢吧

你可能感兴趣的:(iOS runtime 运行时( 四 深谈))