CNAddScoreView.m 11.4 KB
//
//  CNAddScoreView.m
//  CNLiveNetAdd
//
//  Created by CNLive-zxw on 2019/2/28.
//  Copyright © 2019年 cnlive. All rights reserved.
//

#import "CNAddScoreView.h"
#import "UIColor+CNLiveExtension.h"
#import "CNGoldWhereaboutsView.h"

@interface CNAddScoreView()
@property (nonatomic, strong) UIImageView *midImage;
@property (nonatomic, strong) UIButton *scoreBtn;
@property (nonatomic, strong) UILabel *scoreLabel;
@property (nonatomic, strong) UIButton *colseBtn;

@property (nonatomic, strong) UILabel *descLabel;

@property (nonatomic, copy) NSString *score;
@property (nonatomic, copy) NSString *desc;
@property (nonatomic, copy) NSString *login;

@end

@implementation CNAddScoreView
#pragma mark - Using Method
+ (void)showAddScoreViewWithDesc:(NSString *)desc score:(NSString *)score{
    CNAddScoreView *view = [[CNAddScoreView alloc]initWithFrame:CGRectMake(0, 0, [UIScreen mainScreen].bounds.size.width, [UIScreen mainScreen].bounds.size.height)];
    view.backgroundColor = [UIColor colorWithWhite:0.2f alpha:0.4f];
    view.desc = desc;
    view.score = score;
    [AppKeyWindow addSubview:view];
    
}
+ (void)showAddScoreViewWithDesc:(NSString *)desc login:(NSString *)login delegate:(id<CNAddScoreViewDelegate>)delegate {
    CNAddScoreView *view = [[CNAddScoreView alloc]initWithFrame:CGRectMake(0, 0, [UIScreen mainScreen].bounds.size.width, [UIScreen mainScreen].bounds.size.height)];
    view.backgroundColor = [UIColor colorWithWhite:0.2f alpha:0.4f];
    view.desc = desc;
    view.login = login;
    view.delegate = delegate;
    [AppKeyWindow addSubview:view];
}

#pragma mark - Init
- (instancetype)initWithFrame:(CGRect)frame {
    if (self = [super initWithFrame:frame]) {
        self.userInteractionEnabled = YES;
        self.clipsToBounds = YES;
        [self setupUI];
        UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(clickedClose)];
        [self addGestureRecognizer:tap];
    }
    return self;
}
#pragma mark - UI
- (void)setupUI{
    [self addSubview:self.midImage];
    [self addSubview:self.scoreBtn];
    [self addSubview:self.scoreLabel];
    [self addSubview:self.colseBtn];
    [self addSubview:self.descLabel];
    
    [self xw_layoutSubviews];
    
    [self addAnimation];
}

- (void)xw_layoutSubviews{
    [_midImage mas_makeConstraints:^(MASConstraintMaker *make) {
        make.centerX.equalTo(self.mas_centerX);
        make.centerY.equalTo(self.mas_centerY).with.offset(-30*(KScreenWidth/375.0));
        _midImage.width = (KScreenWidth);
        _midImage.height = (KScreenWidth);
        
    }];
    [_scoreBtn mas_makeConstraints:^(MASConstraintMaker *make) {
        make.centerX.equalTo(self.mas_centerX);
        make.bottom.equalTo(_midImage.mas_bottom);
        make.width.offset(160*(KScreenWidth/375.0));
        make.height.offset(44*(KScreenWidth/375.0));
        
    }];
    [_scoreLabel mas_makeConstraints:^(MASConstraintMaker *make) {
        make.centerX.equalTo(self.mas_centerX);
        make.bottom.equalTo(_midImage.mas_bottom).with.offset(-2*(KScreenWidth/375.0));
        make.width.offset(160*(KScreenWidth/375.0));
        make.height.offset(44*(KScreenWidth/375.0));
        
    }];
    [_colseBtn mas_makeConstraints:^(MASConstraintMaker *make) {
        make.top.equalTo(_midImage.mas_top).with.offset(0);
        make.right.equalTo(self.mas_right).with.offset(-10*(KScreenWidth/375.0));
        make.width.height.offset(30*(KScreenWidth/375.0));
        
    }];
    [_descLabel mas_makeConstraints:^(MASConstraintMaker *make) {
        make.centerX.equalTo(self.mas_centerX);
        make.centerY.equalTo(self.mas_centerY).with.offset(-35*(KScreenWidth/375.0));
        make.width.offset(150*(KScreenWidth/375.0));
        make.height.offset(80*(KScreenWidth/375.0));
        
    }];
    
}

#pragma mark - Data
- (void)setLogin:(NSString *)login{
    _login = login;
    _scoreLabel.font = [UIFont fontWithName:@"Helvetica-Bold" size:20];
    _scoreLabel.text = login;
}
- (void)setScore:(NSString *)score{
    _score = score;
    _scoreLabel.font = [UIFont fontWithName:@"Helvetica-Bold" size:30];
    _scoreLabel.text = [NSString stringWithFormat:@"+%@",score];
    
}

- (void)setDesc:(NSString *)desc{
    _desc = desc;
    
    NSMutableString *str = [[NSMutableString alloc]initWithString:desc];
    
    CGSize size = [@"钱" textSizeIn:CGSizeMake(HUGE_VAL, HUGE_VAL) font:_descLabel.font];
    NSInteger characters1 = ceil(140*(KScreenWidth/375.0)/size.width);
    NSInteger characters2 = ceil(110*(KScreenWidth/375.0)/size.width);
    NSInteger characters3 = ceil(90*(KScreenWidth/375.0)/size.width);

    if(str.length > characters1){
        [str insertString:@"\n"atIndex:characters1];
    }
    if(str.length > characters1+characters2){
        [str insertString:@"\n"atIndex:characters1+characters2];
    }
    if(str.length > characters1+characters2+characters3){
        [str insertString:@"\n"atIndex:characters1+characters2+characters3];
    }
    
    NSMutableParagraphStyle *paragraphStyle = [NSMutableParagraphStyle new];
    paragraphStyle.lineSpacing = 10*(KScreenWidth/375.0);
    paragraphStyle.alignment = NSTextAlignmentCenter;
    paragraphStyle.lineBreakMode = NSLineBreakByTruncatingTail;
    NSMutableDictionary *attributes = [NSMutableDictionary dictionary];
    [attributes setObject:paragraphStyle forKey:NSParagraphStyleAttributeName];
    _descLabel.attributedText = [[NSAttributedString alloc] initWithString:str attributes:attributes];
    
}

/*
 // Only override drawRect: if you perform custom drawing.
 // An empty implementation adversely affects performance during animation.
 - (void)drawRect:(CGRect)rect {
 // Drawing code
 }
 */

#pragma mark - Private Methods
- (void)addAnimation{
    _midImage.transform = CGAffineTransformMake(0.01, 0, 0, 0.01, _midImage.x, _midImage.y);
    _scoreBtn.transform = CGAffineTransformMake(0.01, 0, 0, 0.01, _scoreBtn.x, _scoreBtn.y);
    _scoreLabel.transform = CGAffineTransformMake(0.01, 0, 0, 0.01, _scoreLabel.x, _scoreLabel.y);
    _colseBtn.transform = CGAffineTransformMake(0.01, 0, 0, 0.01, _scoreLabel.x, _scoreLabel.y);
    _descLabel.transform = CGAffineTransformMake(0.01, 0, 0, 0.01, _scoreLabel.x, _scoreLabel.y);
    
    [UIView animateWithDuration:0.3f animations:^{
        _midImage.transform = CGAffineTransformMake(1.05f, 0, 0, 1.0f, 0, 0);
        _scoreBtn.transform = CGAffineTransformMake(1.05f, 0, 0, 1.0f, 0, 0);
        _scoreLabel.transform = CGAffineTransformMake(1.05f, 0, 0, 1.0f, 0, 0);
        _colseBtn.transform = CGAffineTransformMake(1.05f, 0, 0, 1.0f, 0, 0);
        _descLabel.transform = CGAffineTransformMake(1.05f, 0, 0, 1.0f, 0, 0);
        
    } completion:^(BOOL finished) {
        [UIView animateWithDuration:0.1f animations:^{
            _midImage.transform = CGAffineTransformMake(1, 0, 0, 1, 0, 0);
            _scoreBtn.transform = CGAffineTransformMake(1, 0, 0, 1, 0, 0);
            _scoreLabel.transform = CGAffineTransformMake(1, 0, 0, 1, 0, 0);
            _colseBtn.transform = CGAffineTransformMake(1, 0, 0, 1, 0, 0);
            _descLabel.transform = CGAffineTransformMake(1, 0, 0, 1, 0, 0);
            
        } completion:^(BOOL finished) {
            //  恢复原位
            _midImage.transform = CGAffineTransformIdentity;
            _scoreBtn.transform = CGAffineTransformIdentity;
            _scoreLabel.transform = CGAffineTransformIdentity;
            _colseBtn.transform = CGAffineTransformIdentity;
            _descLabel.transform = CGAffineTransformIdentity;
            
        }];
        
    }];
    
}
- (void)hiddenAction{
    _midImage.layer.transform = CATransform3DMakeScale(1, 1, 1);
    _scoreBtn.layer.transform = CATransform3DMakeScale(1, 1, 1);
    _scoreLabel.layer.transform = CATransform3DMakeScale(1, 1, 1);
    _colseBtn.layer.transform = CATransform3DMakeScale(1, 1, 1);
    _descLabel.layer.transform = CATransform3DMakeScale(1, 1, 1);
    
    [UIView animateWithDuration:0.3f animations:^{
        // 按照比例scalex=0.001,y=0.001进行缩小
        _midImage.layer.transform = CATransform3DMakeScale(0.001, 0.001, 1);
        _scoreBtn.layer.transform = CATransform3DMakeScale(0.001, 0.001, 1);
        _scoreLabel.layer.transform = CATransform3DMakeScale(0.001, 0.001, 1);
        _colseBtn.layer.transform = CATransform3DMakeScale(0.001, 0.001, 1);
        _descLabel.layer.transform = CATransform3DMakeScale(0.001, 0.001, 1);
        
    } completion:^(BOOL finished) {
        [self removeFromSuperview];
        
    }];
    
}

#pragma mark - Action
+ (void)hide {
    for (UIView *view in AppKeyWindow.subviews) {
        if([view isKindOfClass:[CNGoldWhereaboutsView class]]){
            [view removeAllSubviews];
            [view removeFromSuperview];
            
        }
    }
    for (UIView *view in AppKeyWindow.subviews) {
        if([view isKindOfClass:[CNAddScoreView class]]){
            [view removeAllSubviews];
            [view removeFromSuperview];
            
        }
    }
    
}
- (void)clickedClose {
    [self hiddenAction];
    
    for (UIView *view in AppKeyWindow.subviews) {
        if([view isKindOfClass:[CNGoldWhereaboutsView class]]){
            [view removeFromSuperview];
            
        }
    }
}
- (void)clickedCloseBtn:(UIButton *)btn{
    [self clickedClose];
    
    if (self.delegate && [self.delegate respondsToSelector:@selector(login)]) {
        [self.delegate login];
    }
}

#pragma mark - Lazy loading
- (UIImageView *)midImage{
    if (!_midImage) {
        _midImage = [[UIImageView alloc] init];
        _midImage.userInteractionEnabled = YES;
        _midImage.image = [CNLiveCMineService imageWithMineName:@"add_score_bg"];
        _midImage.contentMode = UIViewContentModeCenter;
    }
    return _midImage;
}
- (UIButton *)scoreBtn{
    if (!_scoreBtn) {
        _scoreBtn = [UIButton buttonWithType:UIButtonTypeCustom];
        _scoreBtn.adjustsImageWhenHighlighted = NO;
        [_scoreBtn setImage:[CNLiveCMineService imageWithMineName:@"add_score_label"] forState:UIControlStateNormal];
        [_scoreBtn addTarget:self action:@selector(clickedCloseBtn:) forControlEvents:UIControlEventTouchUpInside];
        
    }
    return _scoreBtn;
}
- (UILabel *)scoreLabel{
    if(!_scoreLabel){
        _scoreLabel = [[UILabel alloc] init];
        _scoreLabel.textColor = CNLiveColorWithHexString(@"854004");
        _scoreLabel.userInteractionEnabled = NO;
        _scoreLabel.layer.cornerRadius = 20*(KScreenWidth/375.0);
        _scoreLabel.layer.masksToBounds = YES;
        _scoreLabel.textAlignment = NSTextAlignmentCenter;
        _scoreLabel.font = [UIFont fontWithName:@"Helvetica-Bold" size:30];
    }
    return _scoreLabel;
}
- (UIButton *)colseBtn{
    if(!_colseBtn){
        _colseBtn = [UIButton buttonWithType:UIButtonTypeCustom];
        [_colseBtn addTarget:self action:@selector(clickedClose) forControlEvents:UIControlEventTouchUpInside];
        [_colseBtn setImage:[CNLiveCMineService imageWithMineName:@"add_score_close"] forState:UIControlStateNormal];
        
    }
    return _colseBtn;
}
- (UILabel *)descLabel{
    if(!_descLabel){
        _descLabel = [[UILabel alloc] init];
        _descLabel.textColor = CNLiveColorWithHexString(@"A0110D");
        _descLabel.userInteractionEnabled = NO;
        _descLabel.textAlignment = NSTextAlignmentCenter;
        _descLabel.numberOfLines = 3;
        _descLabel.lineBreakMode = NSLineBreakByTruncatingTail;
        _descLabel.font = [UIFont fontWithName:@"Helvetica-Bold" size:16*(KScreenWidth/375.0)];
        
    }
    return _descLabel;
}

@end