UIDatePicker 是一个控制器类,封装了 UIPickerView,但是他是UIControl的子类,专门用于接受日期、时间和持续时长的输入。日期选取器的各列会按照指定的风格进行自动配置,这样就让开发者不必关心如何配置表盘这样的底层操作。你也可以对其进行自定义,令其使用任何范围的日期。 除此之外,它也可以作为倒计时控件。
效果图如下:
日期选择器(UIDatePicker)继承UIControl,因此UIDatePicker可以作为活动控件使用,能与用户交互。
例子一——时间选择器
//
// ViewController.m
// UIDatePickerDemo
//
// Created by Apple on 16/5/18.
// Copyright © 2016年 Apple. All rights reserved.
//
#import "ViewController.h"
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
//创建一个时间选择器对象
UIDatePicker *datePicker = [[UIDatePicker alloc]initWithFrame:CGRectMake(0, 20, 320, 100)];
// 设置为中文(真机上自动获取本机的国际化设置)
NSLocale* locale = [[NSLocale alloc] initWithLocaleIdentifier:@"zh_CN"];
datePicker.locale = locale;
//时区设置,系统默认
[datePicker setTimeZone:[NSTimeZone systemTimeZone]];
//日期/时间选取器支持4种不同模式的选择方式
/**
* UIDatePickerModeTime (6 | 53 | PM)
UIDatePickerModeDate (November | 15 | 2007)
UIDatePickerModeDateAndTime (Wed Nov 15 | 6 | 53 | PM)
UIDatePickerModeCountDownTimer(1 | 53)
*/
// 设置显示模式(根据系统的国际化显示时间风格)
[datePicker setDatePickerMode:UIDatePickerModeDateAndTime];
//设置时间间隔(默认是1分钟)
[datePicker setMinuteInterval:1];
//创建一个当前时间数据
NSDate *now = [[NSDate alloc] init];
//设置时间范围(开始时间和结束时间)
//[datePicker setMinimumDate:now];
//[datePicker setMaximumDate:now];
//设置当前时间
[datePicker setDate:now];
// 绑定处理
[datePicker addTarget:self action:@selector(showTime:) forControlEvents:UIControlEventValueChanged];
[self.view addSubview:datePicker];
}
- (void)showTime:(id) sender {
UIDatePicker* datePicker = (UIDatePicker*)sender;
// 创建一个日期格式器
NSDateFormatter* dateFormatter = [[NSDateFormatter alloc] init];
// 为日期格式器设置格式字符串
[dateFormatter setDateFormat:@"yyyy年MM月dd日 HH:mm"];
// 获取用户通过UIDatePicker设置的日期和时间
NSDate *selected = [datePicker date];
// 使用日期格式器格式化日期、时间
NSString* destDateString = [dateFormatter stringFromDate:selected];
// 格式化字符串
NSString* msg = [NSString stringWithFormat:@"您选择的时间是[%@]",destDateString];
// 创建一个UIAlertView对象(警告框),并通过该警告框显示用户选择的日期、时间
UIAlertView *alertView =[[UIAlertView alloc] initWithTitle:@"提示"
message:msg
delegate:nil
cancelButtonTitle:@"确定"
otherButtonTitles:nil, nil];
// 显示UIAlertView
[alertView show];
}
@end
效果图如下:
例子二——倒计时器
//
// ViewController.m
// CountDownDemo
//
// Created by Apple on 16/5/18.
// Copyright © 2016年 Apple. All rights reserved.
//
#import "ViewController.h"
@interface ViewController ()
@end
UIDatePicker *datePicker;
NSTimer* timer;
NSInteger leftSeconds;
UIButton* button;
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
//创建一个时间选择器对象
datePicker = [[UIDatePicker alloc]initWithFrame:CGRectMake(0, 20, 320, 100)];
// 设置为中文(真机上自动获取本机的国际化设置)
NSLocale* locale = [[NSLocale alloc] initWithLocaleIdentifier:@"zh_CN"];
datePicker.locale = locale;
//时区设置,系统默认
[datePicker setTimeZone:[NSTimeZone systemTimeZone]];
//日期/时间选取器支持4种不同模式的选择方式
/**
* UIDatePickerModeTime (6 | 53 | PM)
UIDatePickerModeDate (November | 15 | 2007)
UIDatePickerModeDateAndTime (Wed Nov 15 | 6 | 53 | PM)
UIDatePickerModeCountDownTimer(1 | 53)
*/
// 设置显示模式(根据系统的国际化显示时间风格)
[datePicker setDatePickerMode:UIDatePickerModeDateAndTime];
//设置时间间隔(默认是1分钟)
[datePicker setMinuteInterval:1];
//创建一个当前时间数据
NSDate *now = [[NSDate alloc] init];
//设置时间范围(开始时间和结束时间)
//[datePicker setMinimumDate:now];
//[datePicker setMaximumDate:now];
//设置当前时间
[datePicker setDate:now];
// 设置使用Count Down Timer模式
datePicker.datePickerMode = UIDatePickerModeCountDownTimer;
[self.view addSubview:datePicker];
button = [UIButton buttonWithType:UIButtonTypeSystem];
[button setTitle:@"开始倒计时" forState:UIControlStateNormal];
button.frame = CGRectMake(100, 250, 100, 100);
[button addTarget:self action:@selector(onClick:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:button];
}
- (void)onClick:(id) sender {
// 获取该倒计时器的剩余时间
leftSeconds = datePicker.countDownDuration;
// 禁用UIDatePicker控件和按钮,则用户不能进行操作
datePicker.enabled = NO;
[sender setEnabled:NO];
// 初始化一个字符串
NSString *message = [NSString stringWithFormat:
@"开始倒计时?您还剩下【%ld】秒", (long)leftSeconds];
// 创建一个UIAlertView(警告框)
UIAlertView *alert = [[UIAlertView alloc]
initWithTitle:@"开始倒计时?"
message:message
delegate:nil
cancelButtonTitle:@"确定"
otherButtonTitles:nil];
// 显示UIAlertView组件
[alert show];
// 启用计时器,控制每隔60秒执行一次tickDown方法
timer = [NSTimer scheduledTimerWithTimeInterval:60
target:self selector:@selector(tickDown)
userInfo:nil repeats:YES];
}
- (void)tickDown {
// 将剩余时间减少60秒
leftSeconds -= 60;
// 修改UIDatePicker的剩余时间
datePicker.countDownDuration = leftSeconds;
// 如果剩余时间小于等于0
if(leftSeconds <= 0)
{
// 启用UIDatePicker控件和按钮
datePicker.enabled = YES;
button.enabled = YES;
// 取消定时器
[timer invalidate];
}
}
@end
效果图如下: