iOS实现倒计时显示 时 分 秒
来源:互联网 发布:php is_string 编辑:程序博客网 时间:2024/05/17 04:35
1.创建一个类继承自UILabel.(用来显示 时 分 秒)
.h文件
#import
@interface TimeLable : UILabel
@property (nonatomic,assign)NSInteger second;
@property (nonatomic,assign)NSInteger minute;
@property (nonatomic,assign)NSInteger hour;
@end
.m文件
#import "TimeLable.h"
@interface TimeLable ()
@property (nonatomic, strong)NSTimer *timer;
@end
@implementation TimeLable
- (id)initWithFrame:(CGRect)frame{
self = [super initWithFrame:frame];
if (self) {
self.textAlignment = NSTextAlignmentCenter;
self.timer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(timeHeadle) userInfo:nil repeats:YES];
}
return self;
}
- (void)timeHeadle{
self.second--;
if (self.second==-1) {
self.second=59;
self.minute--;
if (self.minute==-1) {
self.minute=59;
self.hour--;
}
}
self.text = [NSString stringWithFormat:@"%ld:%ld:%ld",(long)self.hour,(long)self.minute,(long)self.second];
if (self.second==0 && self.minute==0 && self.hour==0) {
[self.timer invalidate];
self.timer = nil;
}
}
2.在需要倒计时器的类中导入头文件即可使用,示例:
TimeLable *lable = [[TimeLable alloc]initWithFrame:CGRectMake(100, 100, 100, 100)];
lable.hour = 10;
lable.minute = 38;
lable.second = 29;
.h文件
#import
@interface TimeLable : UILabel
@property (nonatomic,assign)NSInteger second;
@property (nonatomic,assign)NSInteger minute;
@property (nonatomic,assign)NSInteger hour;
@end
.m文件
#import "TimeLable.h"
@interface TimeLable ()
@property (nonatomic, strong)NSTimer *timer;
@end
@implementation TimeLable
- (id)initWithFrame:(CGRect)frame{
}
- (void)timeHeadle{
}
2.在需要倒计时器的类中导入头文件即可使用,示例:
-----------------------分割线----------------------------
整个label内部倒计时所显示的内容可以看做一个字符串
头部代码#import "YQHomeViewController.h"@interface YQHomeViewController ()//将sb中的label进行拖拽过来@property (weak, nonatomic) IBOutlet UILabel *timeLbl;//创建定时器(因为下面两个方法都使用,所以定时器拿出来设置为一个属性)@property(nonatomic,strong)NSTimer*countDownTimer;@end@implementation YQHomeViewController//倒计时总的秒数static NSInteger secondsCountDown = 86400;- (void)viewDidLoad { [super viewDidLoad];
实现步骤:
1.设置定时器(给定24小时)
一个定时器,定时器里面做设置间隔多少时间执行什么方法(countDownAction)
- (void)viewDidLoad { [super viewDidLoad]; //设置定时器 _countDownTimer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(countDownAction) userInfo:nil repeats:YES]; //启动倒计时后会每秒钟调用一次方法 countDownAction //设置倒计时显示的时间 NSString *str_hour = [NSString stringWithFormat:@"%02ld",secondsCountDown/3600];//时 NSString *str_minute = [NSString stringWithFormat:@"%02ld",(secondsCountDown%3600)/60];//分 NSString *str_second = [NSString stringWithFormat:@"%02ld",secondsCountDown%60];//秒 NSString *format_time = [NSString stringWithFormat:@"%@:%@:%@",str_hour,str_minute,str_second]; self.timeLbl.text = [NSString stringWithFormat:@"倒计时 %@",format_time]; //设置文字颜色 self.timeLbl.textColor = [UIColor blackColor ]; [self.view addSubview:_timeLbl];}
2.方法(countDownAction)(来自创建定时器时需要执行的方法)内部:总秒数递减
1.先递减
2.给时分秒字符串通过递减过后的秒数,重新计算数值,并输出显示
//实现倒计时动作-(void)countDownAction{ //倒计时-1 secondsCountDown--; //重新计算 时/分/秒 NSString *str_hour = [NSString stringWithFormat:@"%02ld",secondsCountDown/3600]; NSString *str_minute = [NSString stringWithFormat:@"%02ld",(secondsCountDown%3600)/60]; NSString *str_second = [NSString stringWithFormat:@"%02ld",secondsCountDown%60]; NSString *format_time = [NSString stringWithFormat:@"%@:%@:%@",str_hour,str_minute,str_second]; //修改倒计时标签及显示内容 self.timeLbl.text=[NSString stringWithFormat:@"实训倒计时 %@",format_time]; //当倒计时到0时做需要的操作,比如验证码过期不能提交 if(secondsCountDown==0){ [_countDownTimer invalidate]; } }
屏幕输出结果:
0 0
- iOS实现倒计时显示 时 分 秒
- iOS实现倒计时显示 时 分 秒
- iOS 实现倒计时显示 时 分 秒
- iOS倒计时的实现,显示剩余天、时、分、秒
- iOS倒计时,显示剩余天、时、分、秒
- iOS倒计时,显示剩余天、时、分、秒
- iOS倒计时,显示剩余天、时、分、秒
- 秒杀活动倒计时 倒计时的实现,显示剩余天、时、分、秒
- JS实现倒计时(时、分,秒)
- JS实现的倒计时(时、分、秒)
- JS实现倒计时(时、分,秒)
- JS 倒计时实现代码(时、分,秒)
- JS实现倒计时(天数,时,分,秒)
- JS实现倒计时(天、时、分,秒)
- 倒计时 多个同时支持 -- 显示*(时:分:秒)
- IOS 含天数、时、分、秒的倒计时
- 倒计时(时、分、秒)面板
- jQuery 倒计时 天、时、分、秒倒计时
- iOS倒计时的实现,显示剩余天、时、分、秒
- Web Service学习小结——JAX-WS CXF AXIS2关系
- POJ 3693 Maximum repetition substring RMQ+后缀数组
- STM32Cube 简单实验的翻译
- 每天一个linux命令:grep 命令
- iOS实现倒计时显示 时 分 秒
- css1.15
- lua 二进制和八进制字符串互转
- 每天一个linux命令:wc命令
- Zigbee+SIM900A 通过http协议实现上传数据到云服务器
- css1.16
- Error:(54, 84) 警告: 最后一个参数使用了不准确的变量类型的 varargs 方法的非 varargs 调用;
- Spring 自定义属性编辑(CustomEditorConfigurer)和类型转换器(ConversionServiceFactoryBean)一起配置问题
- learnR_function_1