UIDatePicker 日期/时间选取器(滚轮)—IOS开发
UIDatePicker 是一个控制器类,封装了 UIPickerView,但是他是UIControl的子类,专门用于接受日期、时间和持续时长的输入。日期选取器的各列会按照指定的风格进行自动配置,这样就让开发者不必关心如何配置表盘这样的底层操作。你也可以对其进行定制,令其使用任何范围的日期。
UIDatePicker 依赖于 NSDate 类,这个类是cocoa 基础的一员,以前用于桌面系统。本文中仅需用到 initWithString 来创建NSDate 所以NSDate 留待专题讲解,你只需要掌握本文中使用的方法就好。
- NSDate* _date = [ [ NSDate alloc] initWithString:@"2012-03-07 00:35:00 -0500"];
一、创建日期/时间选取器
UIDatePicker 使用起来比标准 UIPickerView 更简单。他会根据你指定的日期范围创建自己的数据源。使用它只需要创建一个对象:
- UIDatePicker *datePicker = [ [ UIDatePicker alloc] initWithFrame:CGRectMake(0.0,0.0,0.0,0.0)];
默认情况下选取会显示目前的日期和时间,并提供几个表盘,分别显示可以选择的月份和日期、小时、分钟、以及上午、下午。因此用户默认可以选择任何日期和时间的组合。
二、日期选取器模式
日期/时间选取器支持4种不同模式的选择方式。通过设置 datePickerMode 属性,可以定义选择模式:
- datePicker.datePickerMode = UIDatePickerModeTime;
支持的模式:
- typedef enum {
- 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.g. 1 | 53)
- } UIDatePickerMode;
三、时间间隔
你可以将分钟表盘设置为以不同的时间间隔来显示分钟,前提是该间隔要能够让60整除。默认间隔是一分钟。如果要使用不同的间隔,需要改变 minuteInterval属性:
- datePicker.minuteInterval = 5;
四、日期范围
你可以通过设置mininumDate 和 maxinumDate 属性,来指定使用的日期范围。如果用户试图滚动到超出这一范围的日期,表盘会回滚到最近的有效日期。两个方法都需要NSDate 对象作参数:
- NSDate* minDate = [[NSDate alloc]initWithString:@"1900-01-01 00:00:00 -0500"];
- NSDate* maxDate = [[NSDate alloc]initWithString:@"2099-01-01 00:00:00 -0500"];
- datePicker.minimumDate = minDate;
- datePicker.maximumDate = maxDate;
如果两个日期范围属性中任何一个未被设置,则默认行为将会允许用户选择过去或未来的任意日期。这在某些情况下很有用处,比如,当选择生日时,可以是过去的任意日期,但终止与当前日期。如果你希望设置默认显示的日期,可以使用date属性:
- datePicker.date = minDate;
此外,你还可以用 setDate 方法。如果选择了使用动画,则表盘会滚动到你指定的日期:
- [datePicker setDate:maxDate animated:YES];
五、显示日期选择器
- [self.view addSubview:datePicker];
需要注意的是,选取器的高度始终是216像素,要确定分配了足够的空间来容纳。
六、读取日期
- NSDate* _date = datePicker.date;
由于日期选择器是 UIControl的子类 (与UIPickerView不同),你还可以在UIControl类的通知结构中挂接一个委托:
- [datePicker addTarget:self action:@selector(dateChanged:) forControlEvents:UIControlEventValueChanged ];
只要用户选择了一个新日期,你的动作类就会被调用:
- -(void)dateChanged:(id)sender{
- UIDatepicker* control = (UIDatePicker*)sender;
- NSDate* _date = control.date;
- /*添加你自己响应代码*/
- }
是不是觉得很好玩呢?确实。如果觉得好玩,你也试着封装一个UIPickerView 试试看,打造一个你自己的专用滚轮。
UIDatePicker 日期/时间选取器(滚轮)—IOS开发的更多相关文章
- IOS开发—UIDatePicker 日期/时间选取器(滚轮)
UIDatePicker 是一个控制器类,封装了 UIPickerView,但是他是UIControl的子类,专门用于接受日期.时间和持续时长的输入.日期选取器的各列会按照指定的风格进行自动配置,这样 ...
- [Swift通天遁地]一、超级工具-(18)创建强大、灵活的日期时间拾取器
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...
- [Xcode 实际操作]四、常用控件-(11)UIDatePicker日期时间选择器
目录:[Swift]Xcode实际操作 本文将演示日期拾取器的使用. 使用日期拾取器,可以快速设置和选择日期与时间. 在项目导航区,打开视图控制器的代码文件[ViewController.swift] ...
- iOS开发--UIDatePicker
UIDatePicker 是一个控制器类,封装了 UIPickerView,但是他是UIControl的子类,专门用于接受日期.时间和持续时长的输入.日期选取器的各列会按照指定的风格进行自动配置,这样 ...
- iOS开发-分页栏和选取器的使用
一.分页栏 创建一个新的项目,Subclass of的值选中UIViewController,然后在storyboard中删除根视图,在右下方拖出一个Tab Bar Controller 新增分页,只 ...
- IOS开发之格式化日期时间
IOS开发之格式化日期时间(转) 在开发iOS程序时,有时候需要将时间格式调整成自己希望的格式,这个时候我们可以用NSDateFormatter类来处理. 例如: //实例化一个NSDateFor ...
- 新手必看,史上最全的iOS开发教程集锦,没有之一!
最近大火的iPhone XS Max和iPhone XS,不知道有没有同学已经下手了呢?一万三的价位确实让很多人望而却步啊.据说为了赢得中国的用户,专门出了双卡双待的,可想而知中国市场这块“肥肉”人人 ...
- 全网最全!彻底弄透Java处理GMT/UTC日期时间
目录 前言 本文提纲 版本约定 正文 Date类型实现 时区/偏移量TimeZone 设置默认时区 让人恼火的夏令时 Date时区无关性 读取字符串为Date类型 SimpleDateFormat格式 ...
- Android IOS WebRTC 音视频开发总结(六)-- iOS开发之含泪经验
前段时间在搞webrtc iOS开发,所以将标题改为了Android IOS WebRTC 音视频开发总结, 下面都是开发过程中的经验总结,转载请说明出处(博客园RTC.Blacker): 1. IO ...
随机推荐
- 2016HUAS暑假集训题1 A-士兵队列训练问题
A - 士兵队列训练问题 Description 某部队进行新兵队列训练,将新兵从一开始按顺序依次编号,并排成一行横队,训练的规则如下:从头开始一至二报数,凡报到二的出列,剩下的向小序号方向靠拢,再从 ...
- SVN 的安装与配置
1.下载subclipse1.6的site包 2.把这个site-1.6.2解压开,将其内部的文件,全部放到 C:\Program Files\MyEclipse\MyEclipse 9\dropin ...
- Java配置----JDK开发环境搭建及环境变量配置
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/3 ...
- VC++6.0编译器标记的那些内存值
栈内存初始值 0xcccccccc 和-858993460. 二者是一样的, 一个是16进制, 另一个是10进制
- 如果使用 Excel5 ,输出的内容应该是GBK编码
下面就是php导出excel的程序 <?phpini_set("display_errors",1);//是否显示报错信息set_include_path(get_inclu ...
- 【iCore3 双核心板】例程二十六:MODBUS TCP实验——电源监控
实验指导书及代码包下载: http://pan.baidu.com/s/1pKhxKd9 iCore3 购买链接: https://item.taobao.com/item.htm?id=524229 ...
- nginx https ssl 设置受信任证书[原创]
1. 安装nginx 支持ssl模块 http://nginx.org/en/docs/configure.html yum -y install openssh openssh-devel (htt ...
- apple mobile device服务无法启动,错误1053 解决
我不想安装iTunes,于是下了iTunes64安装包,解压后得到6个文件 安装完 AppleMobileDeviceSupport64.msi 发现服务启动不起来,提示错误1053,网上搜了下发现出 ...
- android.util.Base64结尾加\n的问题
测试代码,String data,String key. SecretKeySpec signingKey = new SecretKeySpec(key.getBytes(), HMAC_SHA1_ ...
- Bugzilla说明
简介 Bugzilla是Mozilla公司向我们提供的一个开源的免费缺陷跟踪工具.作为一个产品缺陷的记录及跟踪工具,它能够为你建立一个完善的Bug跟踪体系,包括报告Bug.查询Bug记录并产生报表.处 ...