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

一般地, 在项目中我们有全局统一的加载成功与失败的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. 自定义的导航栏

等等

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,919评论 25 709
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 14,364评论 4 61
  • 12月13日,跑步第45天,第3次纪录
    云更容易阅读 1,378评论 0 1
  • 让我为你唱一首歌,全世界都陪你听着,这是爱,你会明白,这是唯一不可替代 听到行动营有复盘这一环节,我的内心居然有一...
    肤白大燕阅读 1,621评论 12 2
  • 平安夜,依然仰望星空,有乌云作伴,心,依然孤独着
    你看不见的我阅读 1,504评论 0 0

友情链接更多精彩内容