IOS开发—UIDatePicker 日期/时间选取器(滚轮)
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;
- /*添加你自己响应代码*/
- }
IOS开发—UIDatePicker 日期/时间选取器(滚轮)的更多相关文章
- UIDatePicker 日期/时间选取器(滚轮)—IOS开发
UIDatePicker 是一个控制器类,封装了 UIPickerView,但是他是UIControl的子类,专门用于接受日期.时间和持续时长的输入.日期选取器的各列会按照指定的风格进行自动配置,这样 ...
- iOS开发-分页栏和选取器的使用
一.分页栏 创建一个新的项目,Subclass of的值选中UIViewController,然后在storyboard中删除根视图,在右下方拖出一个Tab Bar Controller 新增分页,只 ...
- iOS开发--UIDatePicker
UIDatePicker 是一个控制器类,封装了 UIPickerView,但是他是UIControl的子类,专门用于接受日期.时间和持续时长的输入.日期选取器的各列会按照指定的风格进行自动配置,这样 ...
- [Swift通天遁地]一、超级工具-(18)创建强大、灵活的日期时间拾取器
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...
- IOS开发之简单音频播放器
今天第一次接触IOS开发的UI部分,之前学OC的时候一直在模拟的使用Target-Action回调模式,今天算是真正的用了一次.为了熟悉一下基本控件的使用方法,和UI部分的回调,下面开发了一个特别简易 ...
- [Xcode 实际操作]四、常用控件-(11)UIDatePicker日期时间选择器
目录:[Swift]Xcode实际操作 本文将演示日期拾取器的使用. 使用日期拾取器,可以快速设置和选择日期与时间. 在项目导航区,打开视图控制器的代码文件[ViewController.swift] ...
- iOS开发时间戳与时间NSDate,时区的转换,汉字与UTF8,16进制的转换
http://blog.sina.com.cn/s/blog_68661bd80101njdo.html 标签: ios时间戳 ios开发时间戳 ios16进制转中文 ios开发utf8转中文 ios ...
- ios开发:一个音乐播放器的设计与实现
github地址:https://github.com/wzpziyi1/MusicPlauer 这个Demo,关于歌曲播放的主要功能都实现了的.下一曲.上一曲,暂停,根据歌曲的播放进度动态滚动歌词, ...
- ios开发学习- 简易音乐播放器2 (基于iPhone4s屏幕尺寸)-- 歌词解析--plist文件应用--imageNamed图片加载耗内存
声明:(部分图片来自网络,如果侵犯了您的权益请联系我,会尽快删除!) 又是音乐播放器,不过这次和上次不一样了,准确说这次更像播放器了,初学者不建议看这个,可以先看前面一个音乐播放器(1),当然 我没加 ...
随机推荐
- (1)编写一个接口:InterfaceA,只含有一个方法int method(int n); (2)编写一个类:ClassA来实现接口InterfaceA,实现int method(int n)接口方 法时,要求计算1到n的和; (3)编写另一个类:ClassB来实现接口InterfaceA,实现int method(int n)接口 方法时,要求计算n的阶乘(n!); (4)编写测试类E测试
package a; public interface InterfaceA { int method(int n); } package a; public class ClassA impleme ...
- js 返回并刷新
chrome 下 history.back()或者history.go(-1)都是返回并刷新的,但是ff浏览器只返回不刷新 location = document.referrer 这个在两个浏览器下 ...
- geom_path: Each group consist of only one observation. Do you need to adjust the group aesthetic?
# sample data d <- data.frame(expand.grid(x=letters[1:4], g=factor(1:2)), y=rnorm(8)) # Figure 1a ...
- SQL生成包含年月日的流水号
--************************************************************************************************** ...
- 使用ansible批量管理远程服务器
使用ansible批量管理远程服务器 背景 本地需要管理远程的一批服务器,主要执行以下任务: 1) 将本地的文件复制到远端所有服务器: 2) 需要在远程服务器中执行一个个命令: 远端服务器路径并非完全 ...
- Codeforces Round #377 (Div. 2) C. Sanatorium 水题
C. Sanatorium time limit per test 1 second memory limit per test 256 megabytes input standard input ...
- CSS笔记(七)列表
CSS 列表属性允许你放置.改变列表项标志,或者将图像作为列表项标志. 参考:http://www.w3school.com.cn/css/css_list.asp 实例: <html> ...
- DB2常识
1.DB2组件 appendixa. db2 database product and packaging informatin一节AESE: 高级企业服务器版(Advanced enterprise ...
- namespace使用总结
1.防止引用文件中函数名相同,导致函数重定义错误: //test1.php <?php namespace foo; function func(){ echo "test1/func ...
- Linux_服务
1.服务启动顺序 http://bbs.chinaunix.net/thread-1970916-1-1.html http://bbs.csdn.net/topics/240060477 2.Lin ...