服务器之家:专注于服务器技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - IOS - iOS中使用UIDatePicker制作时间选择器的实例教程

iOS中使用UIDatePicker制作时间选择器的实例教程

2021-01-18 13:37李刚 IOS

这篇文章主要介绍了iOS中使用UIDatePicker制作时间选择器的实例教程,实例中未选中的时间项目会讲解一个将其变透明的方法,非常给力,需要的朋友可以参考下

uidatepicker的创建
uidatepicker是一个可以用来选择或者设置日期的控件,不过它是像转轮一样的控件,而且是苹果专门为日历做好的控件,如下图所示:

iOS中使用UIDatePicker制作时间选择器的实例教程

除了uidatepicker控件,还有一种更通用的转轮形的控件:uipickerview,只不过uidatepicker控件显示的就是日 历,而uipickerview控件中显示的内容需要我们自己用代码设置。本篇文章简单介绍uidatepicker控件,后边的文章会介绍 uipickerview。

1、运行xcode ,新建一个single view application,名称为uidatepicker test,其他设置如下图所示:

iOS中使用UIDatePicker制作时间选择器的实例教程

2、单击viewcontroller.xib,打开interface builder。拖一个uidatepicker控件到视图上:

iOS中使用UIDatePicker制作时间选择器的实例教程

3、然后拖一个按钮在视图上,并修改按钮名称为select:

iOS中使用UIDatePicker制作时间选择器的实例教程

单击按钮后,弹出一个alert,用于显示用户所作选择。

4、创建映射:打开assistant editor,选中uidatepicker控件,按住control,拖到viewcontroller.h中:

iOS中使用UIDatePicker制作时间选择器的实例教程

新建一个outlet,名称为datepicker:

iOS中使用UIDatePicker制作时间选择器的实例教程

然后以同样的方式为按钮建立一个action映射,名称为buttonpressed,事件类型为默认的touch up inside。

5、选中uidatepicker控件,打开attribute inspector,在其中设置maximum date比如我们这里设为2100-12-31:

iOS中使用UIDatePicker制作时间选择器的实例教程

 


实例
而今天我们要做的时间选取器成品具体效果如下:

iOS中使用UIDatePicker制作时间选择器的实例教程

我们自定义一个lgdatepickerview,在lgdatepickerview里面实现。

背景半透明:

背景是半透明的,点击的灰色背景的时候,时间选取器消失。在lgdatepickerview初始化方法里,代码如下:

复制代码 代码如下:

- (id)init
{
    self = [super init];
    if (self) {
  //背景半透明,绑定取消方法
    uicontrol *control = [[uicontrol alloc] initwithframe:screen_bounds];
    control.backgroundcolor = [uicolor colorwithred:0.0/255.0 green:0.0/255.0 blue:0.0/255.0 alpha:0.5f];
    [self addsubview:control];
    [control addtarget:self action:@selector(actioncancel:) forcontrolevents:uicontroleventtouchupinside];    
     }
    return self;
}


绑定的actioncancel方法:

复制代码 代码如下:

- (void)actioncancel:(id)sender
{
    [self removefromsuperview];
}


确定取消按钮:

 

看到上面的确定取消按钮,你会怎么做,写一个uiview上面放两个uibutton。这样做也是可以实现的。我们还可以用uitoolbar。在lgdatepickerview初始化方法里加上下面这段代码:

复制代码 代码如下:

 // toolbar
uitoolbar *toolbar = [[uitoolbar alloc] initwithframe:cgrectmake(0, screen.height - 250, screen.width, 50)];
toolbar.autoresizingmask = uiviewautoresizingflexibletopmargin | uiviewautoresizingflexiblewidth;
uibarbuttonitem *itemcanceldone = [[uibarbuttonitem alloc] initwithtitle:@"确定" style:uibarbuttonitemstyleplain target:self action:@selector(actionconfirm:)];
uibarbuttonitem *itemcancel = [[uibarbuttonitem alloc] initwithtitle:@"取消" style:uibarbuttonitemstyleplain target:self action:@selector(actioncancel:)];
uibarbuttonitem *space = [[uibarbuttonitem alloc] initwithbarbuttonsystemitem:uibarbuttonsystemitemflexiblespace target:nil action:nil];
[toolbar setitems:[nsarray arraywithobjects:itemcancel,space,itemcanceldone, nil]];
[control addsubview:toolbar];


actioncancel上面已经实现了。下面实现actionconfirm方法。它有什么作用呢?

 

点击的时候获取到时间,然后通过代理代理出去。
时间选取器消失:

复制代码 代码如下:

  - (void)actionconfirm:(id)sender
  {
      if ([self.delegate respondstoselector:@selector(datepickerview:didselecttime:)]) {
          [self.delegate datepickerview:self didselecttime:self.datepicker.date];
      }
      [self removefromsuperview];
  }


代理方法:

 

在lgdatepickerview.h

复制代码 代码如下:


@protocol lgdatepickerviewdelegate <nsobject>

 

- (void)datepickerview:(lgdatepickerview *)datepicker didselecttime:(nsdate *)time;

@end


创建uidatepicker:

 

在lgdatepickerview.h定义一个全局变量

 

复制代码 代码如下:

@property (nonatomic, strong) uidatepicker *datepicker;


在lgdatepickerview初始化方法里加上下面这段代码:

复制代码 代码如下:

uidatepicker *datepicker = [[uidatepicker alloc] init];
datepicker.backgroundcolor = [uicolor whitecolor];
datepicker.datepickermode = uidatepickermodecountdowntimer;
datepicker.date = [nsdate date];
datepicker.frame = cgrectmake(0, screen.height - 200, screen.width, 220);
[control addsubview:datepicker];
self.datepicker = datepicker;


使用lgdatepickerview

 

使用起来很简单,创建一下,然后加载self.view上面即可:

复制代码 代码如下:

    lgdatepickerview *datepicker = [[lgdatepickerview alloc] init];
    datepicker.delegate = self;
    datepicker.datepicker.date = [nsdate date];
    datepicker.frame = self.view.bounds;
    [self.view addsubview:datepicker];

延伸 · 阅读

精彩推荐
  • IOSIOS 屏幕适配方案实现缩放window的示例代码

    IOS 屏幕适配方案实现缩放window的示例代码

    这篇文章主要介绍了IOS 屏幕适配方案实现缩放window的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要...

    xiari5772021-06-01
  • IOS解析iOS开发中的FirstResponder第一响应对象

    解析iOS开发中的FirstResponder第一响应对象

    这篇文章主要介绍了解析iOS开发中的FirstResponder第一响应对象,包括View的FirstResponder的释放问题,需要的朋友可以参考下...

    一片枫叶4662020-12-25
  • IOSiOS中tableview 两级cell的展开与收回的示例代码

    iOS中tableview 两级cell的展开与收回的示例代码

    本篇文章主要介绍了iOS中tableview 两级cell的展开与收回的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧...

    J_Kang3862021-04-22
  • IOSiOS 雷达效果实例详解

    iOS 雷达效果实例详解

    这篇文章主要介绍了iOS 雷达效果实例详解的相关资料,需要的朋友可以参考下...

    SimpleWorld11022021-01-28
  • IOSiOS通过逆向理解Block的内存模型

    iOS通过逆向理解Block的内存模型

    自从对 iOS 的逆向初窥门径后,我也经常通过它来分析一些比较大的应用,参考一下这些应用中某些功能的实现。这个探索的过程乐趣多多,不仅能满足自...

    Swiftyper12832021-03-03
  • IOSiOS布局渲染之UIView方法的调用时机详解

    iOS布局渲染之UIView方法的调用时机详解

    在你刚开始开发 iOS 应用时,最难避免或者是调试的就是和布局相关的问题,下面这篇文章主要给大家介绍了关于iOS布局渲染之UIView方法调用时机的相关资料...

    windtersharp7642021-05-04
  • IOS关于iOS自适应cell行高的那些事儿

    关于iOS自适应cell行高的那些事儿

    这篇文章主要给大家介绍了关于iOS自适应cell行高的那些事儿,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的...

    daisy6092021-05-17
  • IOSIOS开发之字典转字符串的实例详解

    IOS开发之字典转字符串的实例详解

    这篇文章主要介绍了IOS开发之字典转字符串的实例详解的相关资料,希望通过本文能帮助到大家,让大家掌握这样的方法,需要的朋友可以参考下...

    苦练内功5832021-04-01