New file |
| | |
| | | // |
| | | // 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 |