在按钮上添加进度条

2019-04-15  本文已影响0人  _疯狂的柚子

首先创建一个继承自UIVIew的控件
.h

//
//  FYProgressBar.h
//  2019TestProduct
//
//  Copyright © 2019 ChenFuYou. All rights reserved.
//

#import <UIKit/UIKit.h>

NS_ASSUME_NONNULL_BEGIN

@interface FYProgressBar : UIView

@property(nonatomic,strong)UIView *topView;
@property(nonatomic,strong)UILabel *showStep;

-(void)setProgressFromPercent:(CGFloat)percent1 toPercent:(CGFloat)percent2;
-(void)removeProgress;
@end

NS_ASSUME_NONNULL_END

.m

//
//  FYProgressBar.m
//  2019TestProduct
//
//  Copyright © 2019 ChenFuYou. All rights reserved.
//

#import "FYProgressBar.h"

@implementation FYProgressBar

-(instancetype)initWithFrame:(CGRect)frame{
    if (self = [super initWithFrame:frame]) {
        self.backgroundColor = [UIColor clearColor];
        [self createUI];
        
    }
    return self;
}
-(void)createUI{
    
    UIView *backView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, CGRectGetWidth(self.frame), CGRectGetHeight(self.frame))];
    backView.backgroundColor = [UIColor grayColor];
    backView.layer.cornerRadius = CGRectGetHeight(self.frame)/2;
    [self addSubview:backView];
    
    self.topView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, 0, CGRectGetHeight(self.frame))];
    self.topView.backgroundColor = [UIColor colorWithRed:79/255.0 green:138/255.0 blue:255/255.0 alpha:1];
    self.topView.layer.cornerRadius = CGRectGetHeight(self.frame)/2;
    [self addSubview:self.topView];
    
    self.showStep = [[UILabel alloc]initWithFrame:CGRectMake(0, 0, CGRectGetWidth(self.frame), CGRectGetHeight(self.frame))];
    self.showStep.textColor = [UIColor whiteColor];
    self.showStep.layer.masksToBounds = YES;
    self.showStep.text = @"0";
    self.showStep.textAlignment = NSTextAlignmentCenter;
    [self addSubview:self.showStep];

}
-(void)setProgressFromPercent:(CGFloat)percent1 toPercent:(CGFloat)percent2{

    [UIView animateWithDuration:0.8 animations:^{
        
        self.showStep.text = [NSString stringWithFormat:@"%.f%%",percent1 * 100];
        self.topView.frame = CGRectMake(self.topView.bounds.origin.x ,
                                self.topView.bounds.origin.y ,
                                percent2 * CGRectGetWidth(self.frame) ,
                                self.topView.bounds.size.height);
    } completion:^(BOOL finished) {
        
        self.showStep.text = [NSString stringWithFormat:@"%.f%%",percent2 * 100];
        
    }];
    

}
-(void)removeProgress{
    for (UIView *subView in self.subviews) {
        [subView removeFromSuperview];
    }
    [self removeFromSuperview];
}

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

@end

使用:
设为属性:

@property (nonatomic, strong) FYProgressBar *progressBar;

懒加载:

-(FYProgressBar *)progressBar{
    if (_progressBar == nil) {
        self.progressBar = [[FYProgressBar alloc] initWithFrame:self.applyBtn.frame];
        [self.view addSubview:self.progressBar];

        [self.progressBar mas_makeConstraints:^(MASConstraintMaker *make) {
            make.centerX.equalTo(self.view);
            make.left.equalTo(self.view).offset(35);
            make.right.equalTo(self.view).offset(-35);
            make.height.offset(40);
            make.bottom.equalTo(self.view).offset(-20);
        }];
    }
    return _progressBar;
}

在需要的地方

    [self.progressBar setProgressFromPercent:0.2 toPercent:0.5];

移除进度条

-(void)progressHide{
    [self.progressBar removeFromSuperview];
}
上一篇下一篇

猜你喜欢

热点阅读