您的位置:首页 > 移动开发 > Swift

Swift基础之PickerView(时间)选择器

2016-08-02 11:01 148 查看
代码讲解:(后面有额外代码讲解)

首页设计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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: