http://www.sufeinet.com/plugin.php?id=keke_group

苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

分布式系统框架(V2.0) 轻松承载百亿数据,千万流量!讨论专区 - 源码下载 - 官方教程

HttpHelper爬虫框架(V2.7-含.netcore) HttpHelper官方出品,爬虫框架讨论区 - 源码下载 - 在线测试和代码生成

HttpHelper爬虫类(V2.0) 开源的爬虫类,支持多种模式和属性 源码 - 代码生成器 - 讨论区 - 教程- 例子

查看: 3041|回复: 6

[新手开发之旅] iOS新手开发之旅-日期选择器UIDatePicker

[复制链接]
发表于 2018-12-8 17:56:01 | 显示全部楼层 |阅读模式
本帖最后由 竹林风 于 2018-12-8 19:24 编辑

  文章导航  

【iOS新手开发之旅】   http://www.sufeinet.com/thread-24000-1-1.html



介绍


UIDatePicker 是一个控制器类,封装了 UIPickerView,但是他是UIControl的子类,专门用于接受日期、时间和持续时长的输入。
日期选取器的各列会按照指定的风格进行自动配置,这样就让开发者不必关心如何配置表盘这样的底层操作。
你也可以对其进行定制,令其使用任何范围的日期。

UIDatePicker这个类的对象让用户可以在多个车轮上选择日期和时间。iPhone手机上的‘时钟’应用程序中的时间与闹铃中便使用了该控件。

使用这个控件时,如果你能配置正确,当用户滚动车轮到一个新的日期或者时间上时,利用UIControlEventValueChanged触发事件。
UIDatePicker给出了倒计时模式,但是并没有实现相关事件。

如果你使用该模式,必须在应用程序中设置一个NSTime对象,让倒计时中的时间不断减少。


使用

3.gif


代码


[Objective-C] 纯文本查看 复制代码
#import "firstVC.h"


@interface firstVC ()<UITextFieldDelegate>  //遵循协议

@property (nonatomic,strong)UIDatePicker * datePicker;//自定义pickerview

@property(nonatomic,strong)UITextField *timeTextField;



@end

@implementation firstVC

- (void)viewDidLoad {
    [super viewDidLoad];
    
    self.view.backgroundColor = [UIColor yellowColor];
    self.title = @"Leader";
    
    
    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]];
    
    //设置时间格式
    
    //监听DataPicker的滚动
    [datePicker addTarget:self action:@selector(dateChange:) forControlEvents:UIControlEventValueChanged];
    
    self.datePicker = datePicker;
    
    self.timeTextField = [[UITextField alloc]initWithFrame:CGRectMake(0, 100, 150, 50)];
    self.timeTextField.delegate = self;
    [self.view addSubview:self.timeTextField];
    
    //设置时间输入框的键盘框样式为时间选择器
    self.timeTextField.inputView = datePicker;
}

- (void)dateChange:(UIDatePicker *)datePicker {
    
    NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
    
    //设置时间格式
    formatter.dateFormat = @"yyyy年 MM月 dd日";
    NSString *dateStr = [formatter  stringFromDate:datePicker.date];
    
    self.timeTextField.text = dateStr;
}

//禁止用户输入文字
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
    return NO;
}



选择模式
日期/时间选取器持4种不同模式的选择方式。
通过设置 datePickerMode 属性,可以定义选择模式:

[Objective-C] 纯文本查看 复制代码
datePicker.datePickerMode = UIDatePickerModeTime;


支持的模式:

2829694-ce46a5c36ba6cc92.png



四种时间模式样式:


1.UIDatePickerModeTime

29AE7B9EF4787093A51A2E55CA327967.png


在这种模式下,显示时、分、AM/PM标志(可选)。具体的显示顺序取决于设备的本地化设置。


2.UIDatePickerModeDate

77B689E0-EDCF-4418-B2FB-0310A43B936C.png


3. UIDatePickerModeDateAndTime

5CF450F38879B2BA445DA9FE63B1E9E9.png


4.UIDatePickerModeCountDownTimer

3A4BAE66-CEE4-4B93-8017-9ED96DFBA1F0.png


在这种模式下,显示时、分。应用程序必须实现一个计数器(NSTimer对象),让倒计时中的时间不断减少。


日期范围
可以通过设置mininumDate 和 maxinumDate 属性,来指定使用的日期范围。如果用户试图滚动到超出这一范围的日期,表盘会回滚到最近的有效日期。两个方法都需要NSDate 对象作参数:


[Objective-C] 纯文本查看 复制代码
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属性:


[Objective-C] 纯文本查看 复制代码
datePicker.date = minDate; 


还可以用 setDate 方法。如果选择了使用动画,则表盘会滚动到你指定的日期:

[Objective-C] 纯文本查看 复制代码
[datePicker setDate:maxDate animated:YES]; 


附件: Test-UIDatePicker.zip (205.25 KB, 下载次数: 0)


1. 开通SVIP会员,免费下载本站所有源码,不限次数据,不限时间
2. 加官方QQ群,加官方微信群获取更多资源和帮助
3. 找站长苏飞做网站、商城、CRM、小程序、App、爬虫相关、项目外包等点这里
发表于 2018-12-8 17:56:47 | 显示全部楼层
我只是路过打酱油的。
发表于 2018-12-8 18:20:22 | 显示全部楼层
我只是路过打酱油的。
发表于 2018-12-8 18:44:14 | 显示全部楼层
楼主看起来很厉害的样子,我也想学iOS了
发表于 2018-12-9 18:09:33 | 显示全部楼层
楼主加油,我们都看好你哦。
发表于 2018-12-9 18:53:50 | 显示全部楼层
楼主加油,我们都看好你哦。
发表于 2018-12-9 19:36:16 | 显示全部楼层
看到这帖子真是高兴!
您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

QQ|手机版|小黑屋|手机版|联系我们|关于我们|广告合作|苏飞论坛 ( 豫ICP备18043678号-2)

GMT+8, 2024-5-8 23:14

© 2014-2021

快速回复 返回顶部 返回列表