iOS控件--UIDatePicker--日期选择器

UIDatePicker 是一个控制器类,封装了 UIPickerView,但是他是UIControl的子类,专门用于接受日期、时间和持续时长的输入。

日期选取器的各列会按照指定的风格进行自动配置,这样就让开发者不必关心如何配置表盘这样的底层操作。

你也可以对其进行定制,令其使用任何范围的日期。

配置 UIDatePicker 使用

//
    @property (nonatomic, strong) UIDatePicker *datePicker;
// init method
- (void)initDatePicker{
    UIDatePicker *datePicker = [[UIDatePicker alloc] init];
    
    //设置地区: zh-中国
    datePicker.locale = [NSLocale localeWithLocaleIdentifier:@"zh"];
    
    //设置日期模式(Displays month, day, and year depending on the locale setting)
    datePicker.datePickerMode = UIDatePickerModeCountDownTimer;
    
    // 设置当前显示时间
    [datePicker setDate:[NSDate date] animated:YES];
    
    // 设置显示最大/最小时间(此处为当前时间) -- 若其中一个未设置,默认选择过去或者将来某个时间。
    [datePicker setMaximumDate:[NSDate date]];
    [datePicker setMinimumDate:[NSDate date]];
    
    //设置时间格式
    
    //监听DataPicker的滚动
    //[datePicker addTarget:self action:@selector(dateChange:) forControlEvents:UIControlEventValueChanged];
    
    self.datePicker = datePicker;
    
    //设置时间输入框的键盘框样式为时间选择器
    self.timeTextField.inputView = datePicker;
}

datePickerMode 选择日期/时间 模式

typedef NS_ENUM(NSInteger, UIDatePickerMode) {

// 显示时、分、AM/PM标志(可选)。具体的显示顺序取决于设备的本地化设置。
    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)
    
// 显示日期的月、日、星期,时间的时、分、AM/PM标志(可选)。具体的显示顺序取决于设备的本地化设置。
    UIDatePickerModeDateAndTime,    // Displays date, hour, minute, and optionally AM/PM designation depending on the locale setting (e.g. Wed Nov 15 | 6 | 53 | PM)
    
// 显示时、分。应用程序必须实现一个计数器(NSTimer对象),让倒计时中的时间不断减少。
    UIDatePickerModeCountDownTimer, // Displays hour and minute (e.g. 1 | 53)
} __TVOS_PROHIBITED;
以上是对 UIDatePicker 控件的描述和使用,不以偏概全,只授之以渔,有更好的操作也会及时更新。如果您有 UIDatePicker 控件的更好使用欢迎留言交流!

猜你喜欢

转载自blog.csdn.net/weixin_33842328/article/details/87502921