Swift基础之PickerView(时间)选择器
代码讲解:(后面有额外代码讲解)
首页设计UIPickerView的样式设计:
leftArray = ["花朵","颜色","形状"];
let array1 = ["茉莉","玫瑰","郁金香","紫罗兰"];
let array2 = ["红色","黄色","黑色","白色","紫色"];
let array3 = ["圆形","方形","椭圆形"];
righArray = [array1,array2,array3];
let pickerV = UIPickerView.init(frame: CGRectMake(0, 100, self.view.frame.size.width, 260));
//pickerV.backgroundColor = UIColor.brownColor();
//设置是否显示选中状态
pickerV.showsSelectionIndicator = true;
//设置代理
pickerV.dataSource = self;
pickerV.delegate = self;
self.view.addSubview(pickerV);
let btn = UIButton.init(frame: CGRectMake(40, 380, F_Device_W()-40*2, 40));
btn.setTitle("时间选择器", forState: UIControlState.Normal);
btn.backgroundColor = UIColor.cyanColor();
btn.layer.cornerRadius = 5;
self.view.addSubview(btn);
btn.addTarget(self, action: #selector(btnClick), forControlEvents:.TouchUpInside);
添加代理,执行必要的代理方法:
//MARK:---必须要实现的UIPickerViewDatasource的方法
//返回几个分区
func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int {
return 2;
}
//返回各分区行数
func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
if (component == 0)
{
return leftArray.count;
}
else
{
//获取选中第0分区的哪一行
let row1 = pickerView.selectedRowInComponent(0);
//然后根据获取的行号获取第1分区所对应的数据
let arrarY = righArray.objectAtIndex(row1);
return arrarY.count;
}
}
时间选择器UIDatePicker
//UIDatePicker时间选择器,继承于UIControl
let datePick = UIDatePicker.init(frame: CGRectMake(0, 80, self.view.frame.size.width, 300));
//设置显示时间样式,中or英,默认英文显示样式
datePick.locale = NSLocale.init(localeIdentifier: "zh_CN");//中文
datePick.backgroundColor = UIColor.lightGrayColor();
//设置显示类型
datePick.datePickerMode = UIDatePickerMode.DateAndTime;//日期和时间
//设置默认的日期
datePick.date = NSDate.init();
//设置可以选择的最小日期
datePick.minimumDate = NSDate.init(timeIntervalSinceNow: -(60*60*24*7));
//设置可以选择的最大日期
datePick.maximumDate = NSDate.init(timeIntervalSinceNow: 60*60*24*7);
//添加方法获取显示的日期值
datePick.addTarget(self, action: #selector(changeValueDate), forControlEvents: .ValueChanged);
self.view.addSubview(datePick);
dateLabel = UILabel.init(frame: CGRectMake(40, 390, self.view.frame.size.width-80, 50));
dateLabel.textColor = UIColor.blueColor();
dateLabel.textAlignment = NSTextAlignment.Center;
self.view.addSubview(dateLabel);
}
func changeValueDate(datePickerV:UIDatePicker) {
//获取当前选中的时间
let dateE = datePickerV.date;
//转换时间格式
let formatterR = NSDateFormatter.init();
formatterR.dateFormat = "yyyy-MM-dd hh:mm:ss";
let dateStr = formatterR.stringFromDate(dateE);
dateLabel.text = dateStr;
}
额外代码讲解:
//MARK:---值得注意的是,Swift中没有了宏定义define,可以将宏定义写成func 方法进行调用
//如:获取屏幕的宽 高方法
func F_Device_W() -> CGFloat {
return UIScreen.mainScreen().bounds.size.width;
}
func F_Device_H() -> CGFloat {
return UIScreen.mainScreen().bounds.size.height;
}
//设置RGBA宏方法
func RGBA (r:CGFloat, g:CGFloat, b:CGFloat, a:CGFloat) -> UIColor {
return UIColor (red: r/255.0, green: g/255.0, blue: b/255.0, alpha: a);
}
//判断系统版本方法,方法的使用:如:navBar = UIView(frame: CGRectMake(0, 0, 320, IS_IOS7() ? 64:44))//三元运算
func IS_IOS7() ->Bool { return (UIDevice.currentDevice().systemVersion as NSString).doubleValue >= 7.0;
}
func IS_IOS8() -> Bool { return (UIDevice.currentDevice().systemVersion as NSString).doubleValue >= 8.0;
}
结果显示:
源码下载Demo:http://download.csdn.net/detail/hbblzjy/9592406
Swift基础之PickerView(时间)选择器的更多相关文章
- Android零基础入门第57节:日期选择器DatePicker和时间选择器TimePicker
原文:Android零基础入门第57节:日期选择器DatePicker和时间选择器TimePicker 在实际开发中,经常会遇见一些时间选择器.日期选择器.数字选择器等需求,那么从本期开始来学习And ...
- picker-view、微信小程序自定义时间选择器(非官方)
picker-view自定义时间选择器 官网的自定义时间选择器比较简陋.日期不准 下面是我自己写的一个demo <view class="baseList"> < ...
- swift基础:第二部分:函数和闭包
今天本来想利用上午的时间本来打算将swift基础部分学习完的,不巧的是,后台来和我讨论用户评价的接口,讨论过后,商讨出一种可行的方案,十几分钟时间过去了,我拿到将接口介入到已经完成的页面中,完美,终于 ...
- Android PickerView滚动选择器的使用方法
手机里设置闹钟需要选择时间,那个选择时间的控件就是滚动选择器,前几天用手机刷了MIUI,发现自带的那个时间选择器效果挺好看的,于是就自己仿写了一个,权当练手.先来看效果: 效果还行吧?实现思路就是自定 ...
- iOS-自定义起始时间选择器视图
概述 自定义起始时间选择器视图, 调起时间选择器, 传值(起始时间/截止时间), 两者时间均要合理, 不能超过未来时间, 并且起始时间不能大于截止时间. 点击取消或空白处收起时间选择器. 详细 代码下 ...
- 微信小程序中利用时间选择器和js无计算实现定时器(将字符串或秒数转换成倒计时)
转载注明出处 改成了一个单独的js文件,并修改代码增加了通用性,点击这里查看 今天写小程序,有一个需求就是用户选择时间,然后我这边就要开始倒计时. 因为小程序的限制,所以直接选用时间选择器作为选择定时 ...
- 移动端lCalendar纯原生js日期时间选择器
网上找过很多的移动端基于zepto或jquery的日期选择器,在实际产品中也用过一两种,觉得都不太尽如人意,后来果断选择了H5自己的日期input表单,觉得还可以,至少不用引用第三方插件了,性能也不错 ...
- swift基础:第六部分:类与对象
http://reactnative.cn/docs/0.24/getting-started.html#content(react Native 开发文档) 互联网这个时代,你松懈一天,就会有很多很 ...
- Swift基础语法学习总结(转)
Swift基础语法学习总结 1.基础 1.1) swift还是使用// 和/* */ 来注释,并且/* */允许多行注释. 1.2) swift使用print和println打印,它的传参是一个泛型 ...
随机推荐
- JAVA 练习 找出素数
package com.zhang.hello; public class Task { /** * 1. 输出打印九九乘法表 * */ public void NO1(){ for(int i=1; ...
- ubuntu14.04 python2.7 安装配置OpenCV3.0
环境:ubuntu14.04 python2.7 内容:安装并配置OpenCV3.0 今天按照OpenCV官网上的步骤装了OpenCV但是,装好之后python提示“No module named ...
- 模仿天猫实战【SSM版】——后台开发
上一篇文章链接:模仿天猫实战[SSM版]--项目起步 后台需求分析 在开始码代码之前,还是需要先清楚自己要做什么事情,后台具体需要实现哪些功能: 注意: 订单.用户.订单.推荐链接均不提供增删的功能. ...
- Sharding-jdbc实现分库分表
首先在pom文件中引入需要的依赖 <dependency> <groupId>io.shardingjdbc</groupId> <artifactId> ...
- 解放双手——Android的自动化构建及发布
在一个App从开发到测试的过程中,我有很长一段时间都是这样做的:打包,上传到tower,在tower上编写本次更新说明,通知测试.一般情况下,打包及上传的过程大概也就2分钟.除此之外,由于项目代码有作 ...
- android NDK的下载-文件太大
需要FQ,建议使用VPN,下载前准备点时间配置网络环境.我的百度网盘好像有~~不过忘记地址了,改天共享,或者私聊我. 2015.4 Android 5.1 Android Studio https:/ ...
- mongo 读分析
分布式读 读冲突 分布式中数据库有多份数据,各份数据可能存在不一致性. mongo 只会写到primary节点上,理论上来说不会有文档冲突,也就是说数据库中的数据都以primary节点为标准. 但是有 ...
- SQL Server 虚拟化(1)——虚拟化简介
本文属于SQL Server虚拟化系列 前言: 现代系统中,虚拟化越来越普遍,如果缺乏对虚拟化工作原理的理解,那么DBA在解决性能问题比如降低资源争用.提高备份还原速度等操作时就会出现盲点.所以基于本 ...
- dubbo安装
dubbo 管控台可以对注册到 zookeeper 注册中心的服务或服务消费者进行管理,分享牛系列,分享牛专栏,分享牛.但管控台是否正常对 Dubbo 服务没有影响,管控台也不需要高可用,因此可以单节 ...
- ejabberd mod_echo 解析
ejabberd mod_echo 解析(金庆的专栏 2016.8)按开发入门的说明,mod_echo是最简单的模块之一.https://docs.ejabberd.im/developer/当然 m ...