倒计时是一个常用的功能页面, 该功能可以分解成3步: ①倒计时UI的展示 ②定时数据的格式与解析 ③定时器的选择
下面通过3个知识点来完成整个功能
1. UIDatePicker
UIDatePicker 是一个系统封装好控制器类,封装了 UIPickerView,但是他是UIControl的子类,专门用于接受日期、时间和持续时长的输入,我们对于时间选择的UI可以直接使用该类去完成,下面贴出具体使用代码
@property (nonatomic, strong) UIDatePicker *datePicker; //设置为属性
- (void)configPickerView{ //创建
UIDatePicker *datePicker = [[UIDatePicker alloc] initWithFrame:CGRectMake(0, 100, self.view.frame.size.width, 200)];
//设置地区: zh-中国
datePicker.locale = [NSLocale localeWithLocaleIdentifier:@"zh"];
//设置日期模式(Displays month, day, and year depending on the locale setting)
datePicker.datePickerMode = UIDatePickerModeCountDownTimer;
//设置当前显示时间
//需要转换的字符串
NSString *dateString = @"5"; //格式2018-11-22 08:08:08对应yyyy-MM-dd HH:mm:ss 初始化为5
//设置转换格式
NSDateFormatter *formatter = [[NSDateFormatter alloc] init] ;
[formatter setDateFormat:@"mm"]; //对应设置的5为分钟
//NSString转NSDate
NSDate *date=[formatter dateFromString:dateString];
[datePicker setDate:date animated:YES];
//监听DataPicker的滚动
[datePicker addTarget:self action:@selector(dateChange:) forControlEvents:UIControlEventValueChanged];
self.datePicker = datePicker;
[self.view addSubview:self.datePicker];
}
这里需要注意datePickerMode方法,系统提供了多种形态的UI可供选择
typedef NS_ENUM(NSInteger, UIDatePickerMode) {
UIDatePickerModeTime, // Displays hour, minute, and optionally AM/PM designation depending on the locale setting (e.g. 6 | 53 | PM)
UIDatePickerModeDate, // Displays month, day, and year depending on the locale setting (e.g. November | 15 | 2007)
UIDatePickerModeDateAndTime, // Displays date, hour, minute, and optionally AM/PM designation depending on the locale setting (e.g. Wed Nov 15 | 6 | 53 | PM)
UIDatePickerModeCountDownTimer, // Displays hour and minute (e