美文网首页iOS开发攻城狮的集散地
Runtime给控制器添加属性:加载提示view

Runtime给控制器添加属性:加载提示view

作者: cyh老崔 | 来源:发表于2017-09-12 22:57 被阅读23次

一般地, 在项目中我们有全局统一的加载成功与失败的view.如果我们不做任何封装的话, 需要在每个vc中都需要堆砌相同的代码.常用的解决方法有:

一.继承

抽取一个父类, 简单不赘述.

  • 缺点: 继承不宜多用, 如果每一个功能都抽取一个父类, 最终结果可能无法使用. 因为iOS不支持多继承.

一.给vc的分类添加属性

  • 优点: 导入分类即可拿到属性
  • 1.定义常量
static char kYHWebCenterLoadingViewKey;
  • 2.getter
- (YHWebCenterLoadingView *)loadingView{
    
    YHWebCenterLoadingView *loadingView = objc_getAssociatedObject(self, &kYHWebCenterLoadingViewKey);
    if (!loadingView) {
        loadingView = [YHWebCenterLoadingView webLoadingView];
        
        //frame默认是当前vc的view的bounds
        loadingView.frame = self.view.bounds;
        loadingView.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth;
        [self.view addSubview:loadingView];
        
        objc_setAssociatedObject(self, &kYHWebCenterLoadingViewKey, loadingView, OBJC_ASSOCIATION_ASSIGN);
        
    }
    [self.view bringSubviewToFront:loadingView];
    return loadingView;
}
    1. setter
- (void)setLoadingView:(YHWebCenterLoadingView *)loadingView{
    
    [self.view addSubview:loadingView];
    objc_setAssociatedObject(self, &kYHWebCenterLoadingViewKey, loadingView, OBJC_ASSOCIATION_ASSIGN);
}

总结

对于'vc', 其实有很多全局的view, 我们可以采用这种方法, 如:

    1. 加载失败view
    1. 加载数据为空的提示view
    1. 自定义的导航栏

等等

相关文章

网友评论

    本文标题:Runtime给控制器添加属性:加载提示view

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