仿照余额宝余额动态变动

仿照余额宝余额动态变动

@implementation yuebaoView
{
NSTimer *_yesterdayIncomeLabelAnimationTimer;
NSTimer *_totalMoneyAmountLabelAnimationTimer;
 }

- (void)setNumberTextOfLabel:(UILabel *)label WithAnimationForValueContent:(CGFloat)value
{
 CGFloat lastValue = [label.text floatValue];
 CGFloat delta = value - lastValue;
 if (delta == 0) return;

if (delta > 0) {

    CGFloat ratio = value / 60.0;

    NSDictionary *userInfo = @{@"label" : label,
                               @"value" : @(value),
                               @"ratio" : @(ratio)
                               };
    NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:0.02 target:self selector:@selector(setupLabel:) userInfo:userInfo repeats:YES];
    if (label == self.yesterdayIncomeLabel) {
        _yesterdayIncomeLabelAnimationTimer = timer;
    } else {
        _totalMoneyAmountLabelAnimationTimer = timer;
    }
}
}



- (void)setupLabel:(NSTimer *)timer
{
NSDictionary *userInfo = timer.userInfo;
UILabel *label = userInfo[@"label"];
CGFloat value = [userInfo[@"value"] floatValue];
CGFloat ratio = [userInfo[@"ratio"] floatValue];

static int flag = 1;
CGFloat lastValue = [label.text floatValue];
CGFloat randomDelta = (arc4random_uniform(2) + 1) * ratio;
CGFloat resValue = lastValue + randomDelta;

if ((resValue >= value) || (flag == 50)) {
    label.text = [NSString stringWithFormat:@"%.2f", value];
    flag = 1;
    [timer invalidate];
    timer = nil;
    return;
} else {
    label.text = [NSString stringWithFormat:@"%.2f", resValue];
}

flag++;

}

你可能感兴趣的:(ios,数字,动态,变动)