一般地, 在项目中我们有全局统一的加载成功与失败的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;
}
- setter
- (void)setLoadingView:(YHWebCenterLoadingView *)loadingView{
[self.view addSubview:loadingView];
objc_setAssociatedObject(self, &kYHWebCenterLoadingViewKey, loadingView, OBJC_ASSOCIATION_ASSIGN);
}
总结
对于'vc', 其实有很多全局的view
, 我们可以采用这种方法, 如:
- 加载失败
view
- 加载失败
- 加载数据为空的提示
view
- 加载数据为空的提示
- 自定义的导航栏
等等