iOS支付宝金额跳动的效果
来源:互联网 发布:淘宝服装店铺文案 编辑:程序博客网 时间:2024/04/30 08:45
#import "UILabel+JumpNumber.h"#import <objc/runtime.h>#define kRangeNumberKey @"RangeKey" //每次数字跳动相差的间隔数#define kBeginNumberKey @"BeginNumberKey" //起始数字#define kEndNumberKey @"EndNumberKey" //结束跳动时的数字#define kFormatKey @"FormatStringKey" //字符串格式#define kFrequency 1.0/30.0f //数字跳动频率#define kRangeNumber(endNumber,duration) (endNumber * kFrequency)/duration@interface UILabel ()@property (nonatomic, strong) NSNumber *flickerNumber;@property (nonatomic, strong) NSTimer *currentTimer;@end@implementation UILabel (JumpNumber)#pragma mark - getter & setter methods//No.1//开始写代码,完成 "flickerNumber" 和 "currentTimer" 的getter、setter方法- (void)setFlickerNumber:(NSNumber *)flickerNumber { objc_setAssociatedObject(self, "flickerNumber", flickerNumber, OBJC_ASSOCIATION_RETAIN_NONATOMIC);}- (NSNumber *)flickerNumber { return objc_getAssociatedObject(self, "flickerNumber");}- (void)setCurrentTimer:(NSTimer *)currentTimer { objc_setAssociatedObject(self, "currentTimer", currentTimer, OBJC_ASSOCIATION_RETAIN_NONATOMIC);}- (NSTimer *)currentTimer { return objc_getAssociatedObject(self, "currentTimer");}//end_code#pragma mark - flicker methods(public)- (void)oxc_setNumber:(NSNumber *)number { [self oxc_setNumber:number duration:1.0 format:nil];}- (void)oxc_setNumber:(NSNumber *)number format:(NSString *)formatStr { [self oxc_setNumber:number duration:1.0 format:formatStr];}- (void)oxc_setNumber:(NSNumber *)number duration:(NSTimeInterval)duration format:(NSString *)formatStr{ /*检查是否是数字类型*/ if(![number isKindOfClass:[NSNumber class]]){ self.text = [NSString stringWithFormat:@"%@",number]; return; } [self.currentTimer invalidate]; self.currentTimer = nil; /*变量初始化*/ self.flickerNumber = @(0); int beginNumber = 0; int endNumber = [number intValue]; NSMutableDictionary *userInfo = [NSMutableDictionary dictionaryWithCapacity:0]; if(formatStr) { [userInfo setObject:formatStr forKey:kFormatKey]; } [userInfo setObject:@(beginNumber) forKey:kBeginNumberKey]; [userInfo setObject:number forKey:kEndNumberKey]; [userInfo setObject:@(kRangeNumber(endNumber, duration)) forKey:kRangeNumberKey]; self.currentTimer = [NSTimer scheduledTimerWithTimeInterval:kFrequency target:self selector:@selector(flickerAnimation:) userInfo:userInfo repeats:YES]; [[NSRunLoop currentRunLoop] addTimer:self.currentTimer forMode:NSRunLoopCommonModes];}#pragma mark - private methods- (void)flickerAnimation:(NSTimer *)timer{ //No.2 //开始写代码,根据前后代码补全每次数字跳动的实现过程 //获取字典信息 NSMutableDictionary *info = timer.userInfo; int begin = (int)[info objectForKey:kBeginNumberKey]; int end = ((NSNumber *)[info objectForKey:kEndNumberKey]).intValue; int range = ((NSNumber *)[info objectForKey:kRangeNumberKey]).intValue;// NSString *format = [info objectForKey:kFormatKey]; //获取text值 如果为0表示第一次;如果大于end表示到达最大值,结束定时器;否则显示当前数加上间隔数 int value = self.text.intValue;// NSLog(@"%d, %d, %d, %d", value, begin, end, range); if (value == 0) { self.text = [NSString stringWithFormat:@"%d", begin]; } else if (value >= end) { self.text = [NSString stringWithFormat:@"%d", end]; [self.currentTimer invalidate]; self.currentTimer = nil; return; } else { value += range; self.text = [NSString stringWithFormat:@"%d", value]; } //end_code}- (NSString *)finalString:(NSNumber *)number stringFormat:(NSString *)formatStr { NSAssert([formatStr rangeOfString:@"%@"].location != NSNotFound, @"string format type is not matched,please check your format type"); return [NSString stringWithFormat:formatStr,number];}@end
0 0
- iOS支付宝金额跳动的效果
- iOS 金额余额从0跳动显示的动画
- IOS开发 UIView的跳动效果
- ios跳动效果
- 仿支付宝数字跳动
- iOS 支付金额计算问题
- ios 核心动画-------跳动效果的实现,旋转效果的实现
- 类似弹簧跳动的动画效果
- 仿支付宝金额变化
- 仿余额宝数字渐慢跳动效果
- 带有阻尼效果(橡皮筋效果)跳动的Loading动画
- 带有阻尼效果(橡皮筋效果)跳动的Loading动画
- ios中平移手势的跳动问题
- 【iOS】UITextView 自动跳动的问题
- js金额的格式化效果
- iOS 支付宝支付的使用
- iOS-支付宝支付的实现
- qq头像跳动效果
- PAT-A1030
- PS cc 联系表II 的参数配置
- java接入支付宝手机网站支付
- Linux netstat命令详解
- java学习第五天
- iOS支付宝金额跳动的效果
- PAT-A1031
- :nth-child()伪类选择器
- 修改nginx运行端口
- ACM前奏模板
- 给程序员最好的18个忠告!
- 微信网页开发--分享接口
- PAT-A1032
- PAT-A1034