// // LMJEasyBlankPageView.m // iOSProject // // Created by windshan on 2017/12/29. // Copyright © 2017年 windshan. All rights reserved. // #import "LMJEasyBlankPageView.h" @interface LMJEasyBlankPageView() /** 加载按钮 */ @property (weak, nonatomic) UIButton *reloadBtn; /** 图片 */ @property (weak, nonatomic) YYAnimatedImageView *imageView; /** 提示 label */ @property (weak, nonatomic) UILabel *tipLabel; /** 按钮点击 */ @property (nonatomic, copy) void(^reloadBlock)(UIButton *sender); @end @implementation LMJEasyBlankPageView - (void)willMoveToSuperview:(UIView *)newSuperview { [super willMoveToSuperview:newSuperview]; self.backgroundColor = newSuperview.backgroundColor; } - (instancetype)initWithFrame:(CGRect)frame { self = [super initWithFrame:frame]; if (self) { [self.tipLabel mas_makeConstraints:^(MASConstraintMaker *make) { make.centerX.offset(0); make.left.right.equalTo(self.imageView); make.top.mas_offset(frame.size.height * 0.2); }]; [self.imageView mas_makeConstraints:^(MASConstraintMaker *make) { make.top.mas_equalTo(self.tipLabel.mas_bottom).offset(10); make.centerX.offset(0); }]; [self.reloadBtn mas_makeConstraints:^(MASConstraintMaker *make) { make.centerX.offset(0); make.top.mas_equalTo(self.imageView.mas_bottom).offset(10); // make.width.mas_equalTo(@94); make.height.mas_equalTo(44); }]; } return self; } - (void)configWithType:(LMJEasyBlankPageViewType)blankPageType hasData:(BOOL)hasData hasError:(BOOL)hasError reloadButtonBlock:(void(^)(UIButton *sender))block { if (hasData) { [self removeFromSuperview]; return; } self.reloadBtn.hidden = YES; self.tipLabel.hidden = YES; self.imageView.hidden = YES; self.reloadBlock = block; if (hasError) { [self.imageView setImage:[UIImage imageNamed:@"common_noNetWork"]]; self.tipLabel.text = @"貌似出了点差错"; self.reloadBtn.hidden = NO; self.tipLabel.hidden = NO; self.imageView.hidden = NO; } else { if (blankPageType == LMJEasyBlankPageViewTypeNoData) { [self.imageView setImage:[UIImage imageNamed:@"common_noRecord"]]; self.tipLabel.text = @"暂无数据"; self.reloadBtn.hidden = NO; self.tipLabel.hidden = NO; self.imageView.hidden = NO; } } } - (void)reloadClick:(UIButton *)btn { !self.reloadBlock ?: self.reloadBlock(btn); } - (UIButton *)reloadBtn { if(!_reloadBtn) { UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom]; [self addSubview:btn]; _reloadBtn = btn; [btn setTitleColor:[UIColor blackColor] forState:UIControlStateNormal]; [btn setBackgroundColor:[UIColor lightGrayColor] forState:UIControlStateNormal]; [btn setBackgroundColor:[UIColor darkGrayColor] forState:UIControlStateHighlighted]; [btn setTitle:@"点击重新加载" forState:UIControlStateNormal]; [btn addTarget:self action:@selector(reloadClick:) forControlEvents:UIControlEventTouchUpInside]; } return _reloadBtn; } - (YYAnimatedImageView *)imageView { if(!_imageView) { YYAnimatedImageView *imageView = [[YYAnimatedImageView alloc] init]; imageView.autoPlayAnimatedImage = YES; [self addSubview:imageView]; _imageView = imageView; } return _imageView; } - (UILabel *)tipLabel { if(!_tipLabel) { UILabel *label = [[UILabel alloc] init]; [self addSubview:label]; _tipLabel = label; label.numberOfLines = 0; label.textAlignment = NSTextAlignmentCenter; label.backgroundColor = [UIColor lightGrayColor]; label.textColor = [UIColor blackColor]; label.font = [UIFont systemFontOfSize:16]; } return _tipLabel; } @end static void *BlankPageViewKey = &BlankPageViewKey; @implementation UIView (LMJConfigBlank) - (void)setBlankPageView:(LMJEasyBlankPageView *)blankPageView{ objc_setAssociatedObject(self, BlankPageViewKey, blankPageView, OBJC_ASSOCIATION_RETAIN_NONATOMIC); } - (LMJEasyBlankPageView *)blankPageView{ return objc_getAssociatedObject(self, BlankPageViewKey); } - (void)configBlankPage:(LMJEasyBlankPageViewType)blankPageType hasData:(BOOL)hasData hasError:(BOOL)hasError reloadButtonBlock:(void (^)(id))block{ if (hasData) { if (self.blankPageView) { self.blankPageView.hidden = YES; [self.blankPageView removeFromSuperview]; } }else{ if (!self.blankPageView) { self.blankPageView = [[LMJEasyBlankPageView alloc] initWithFrame:CGRectMake(0, 0, self.lmj_width, self.lmj_height)]; } self.blankPageView.hidden = NO; [self addSubview:self.blankPageView]; [self.blankPageView configWithType:blankPageType hasData:NO hasError:hasError reloadButtonBlock:block]; } } @end