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

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

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

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