亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

swift3.0 包含年月日十分 時間選擇器的實現

2019-11-09 16:03:07
字體:
來源:轉載
供稿:網友

相信很多app需要顯示年月日時分,但是系統自帶的datapicker選擇時分后沒有年月,故需要這樣的

項目上不需要顯示秒,所以隱藏了秒,需要顯示秒的同學,可以參照代碼隱藏即可

效果圖:

view代碼:

////  LYJDatePicker02.swift//  MyswiftDemo////  Created by Liyanjun on 2017/2/8.//  Copyright © 2017年 hand. All rights reserved.//import UIKit/// 這是時間選擇器,實現 yyyy-mm-dd HH:mi:ssclass LYJDatePicker02: UIView {    var canButtonReturnB: (() -> Void)? //取消按鈕的回調        var sucessReturnB: ((_ date:String) -> Void)?//選擇的回調            var title = UILabel.init(lableText: "選擇時間")//標題        var cancelButton = UIButton.init(title: "取消", bgColor: UIColor.clear, font:  CGFloat(mylableSize)) //取消按鈕        var confirmButton = UIButton.init(title: "確定", bgColor: UIColor.clear, font:  CGFloat(mylableSize)) //取消按鈕            var pickerView = UipickerView()             var lineView = UIView()//一條橫線        var returnString:String  {            get{                        let selectedMonthFormat = String(format:"%.2d",selectedMonth)                    let selectedDayFormat = String(format:"%.2d",selectedDay)                                let selectedHourFormat = String(format:"%.2d",selectedHour)                        let selectedMinuteFormat = String(format:"%.2d",selectedMinute)                                    return "/(selectedYear)-/(selectedMonthFormat)-/(selectedDayFormat) /(selectedHourFormat):/(selectedMinuteFormat)"                            }                } //返回的時間字符串                //數據相關    var yearRange = 30 + 1000//年的范圍        var dayRange = 0 //            var startYear = 0        var selectedYear = 0;    var selectedMonth = 0;    var selectedDay = 0;    var selectedHour = 0;    var selectedMinute = 0;    var selectedSecond = 0;                                        override init(frame: CGRect) {        super.init(frame: frame)                self.setupUI()                self.initData()    }            convenience init() {        self.init(frame:CGRect.init(x: 0, y: 0, width: 100, height: 100))                self.setupUI()                self.initData()            }                        override func layoutSubviews() {        super.layoutSubviews()    }        required init?(coder aDecoder: NSCoder) {                super.init(coder: aDecoder)                fatalError("init(coder:) has not been implemented")    }        //MARK:初始化數據    func initData()  {                                let  calendar0 = Calendar.init(identifier: .gregorian)//公歷                var comps = DateComponents()//一個封裝了具體年月日、時秒分、周、季度等的類                let unitFlags:Set<Calendar.Component> = [.year , .month , .day , .hour , .minute]                                   comps = calendar0.dateComponents(unitFlags, from: Date())                startYear = comps.year! - 100                                dayRange = self.isAllDay(year: startYear, month: 1)                yearRange = 30 + 1000;        selectedYear = comps.year!;        selectedMonth = comps.month!;        selectedDay = comps.day!;        selectedHour = comps.hour!;        selectedMinute = comps.minute!;                        self.pickerView.selectRow(selectedYear - startYear, inComponent: 0, animated: true)                        self.pickerView.selectRow(selectedMonth - 1, inComponent: 1, animated: true)                self.pickerView.selectRow(selectedDay - 1, inComponent: 2, animated: true)                       self.pickerView.selectRow(selectedHour , inComponent: 3, animated: true)                       self.pickerView.selectRow(selectedMinute , inComponent: 4, animated: true)                        self.pickerView.reloadAllComponents()                  }            func setupUI() {                self.backgroundColor = UIColor.white                self.addtitle()                self.addcancelButton()                self.addlineView()                self.addconfirmButton()               self.addPickerView()            }                    //MARK:設置標題    PRivate func addtitle(){                        self.addSubview(title)                self.titleP()        self.titleF()                            }                private func titleP(){        title.textColor = TitlelableColor                title.textAlignment = .center                title.font = UIFont.systemFont(ofSize: CGFloat(mylableSize))                            }                private func titleF(){        title.snp.makeConstraints { (make) in                        make.top.equalTo(self.snp.top).offset(mycommonEdge)                        make.centerX.equalTo(self.snp.centerX)                    }            }                private func titleD(title:String){                self.title.text = title    }            //MARK:設置取消按鈕    private func addcancelButton(){                self.addSubview(cancelButton)                self.cancelP()                self.cancelF()    }        private func cancelP(){                self.cancelButton.setTitleColor(UIColor.system, for: .normal)        self.cancelButton.tag = 101        self.cancelButton.addTarget(self, action: #selector(buttonClick(_:)), for: .touchUpInside)            }        private func cancelF(){                self.cancelButton.snp.makeConstraints { (make) in            make.top.equalTo(self.snp.top).offset(mycommonEdge)                        make.leading.equalTo(self.snp.leading).offset(mycommonEdge)                        make.height.equalTo(mylableSize)                        make.width.equalTo(40)                    }            }        private func cancelD(){            }                //MARK:設置確定按鈕    private func addconfirmButton(){                self.addSubview(confirmButton)                self.confirmButtonP()                self.confirmButtonF()    }        private func confirmButtonP(){                self.confirmButton.setTitleColor(UIColor.system, for: .normal)        self.confirmButton.tag = 102        self.confirmButton.addTarget(self, action: #selector(buttonClick(_:)), for: .touchUpInside)            }        private func confirmButtonF(){                self.confirmButton.snp.makeConstraints { (make) in            make.top.equalTo(self.snp.top).offset(mycommonEdge)                        make.trailing.equalTo(self.snp.trailing).offset(-mycommonEdge)                        make.height.equalTo(mylableSize)                        make.width.equalTo(40)                    }            }                    //MARK:按鈕的點擊    func buttonClick(_ sender:UIButton) {        debugPrint("======取消按鈕被點擊=====")                        switch sender.tag {        case 101:            //取消            if self.canButtonReturnB != nil {                                self.canButtonReturnB!()            }        case 102:            //確定            if self.sucessReturnB != nil {                                self.sucessReturnB!(self.returnString)                            }                                default:            break        }                                    }                //MARK:設置橫線    private func addlineView(){                self.addSubview(lineView)                self.lineViewP()                self.lineViewF()            }        private func lineViewP(){                self.lineView.backgroundColor = UIColor.systemGray                    }        private func lineViewF(){                self.lineView.snp.makeConstraints { (make) in                        make.top.equalTo(self.cancelButton.snp.bottom).offset(mycommonEdge)                        make.leading.trailing.equalTo(self)                        make.height.equalTo(1)                                }            }            func addPickerView()  {                self.addSubview(self.pickerView)                self.setPickerP()                self.setPickerF()    }        func setPickerP()  {                self.pickerView.dataSource = self                self.pickerView.delegate = self    }        func setPickerF()  {                pickerView.snp.makeConstraints { (make) in            make.top.equalTo(self.lineView.snp.bottom)                        make.leading.trailing.bottom.equalTo(self)                    }    }        //MARK:計算每個月有多少天        func isAllDay(year:Int, month:Int) -> Int {              var   day:Int = 0        switch(month)        {        case 1,3,5,7,8,10,12:            day = 31        case 4,6,9,11:            day = 30        case 2:                            if(((year%4==0)&&(year%100==0))||(year%400==0))                {                    day=29                                }                else                {                    day=28;                            }                   default:            break;        }        return day;    }        }extension  LYJDatePicker02:UIPickerViewDelegate,UIPickerViewDataSource{ //MARK:UIPickerViewDataSource    //返回UIPickerView當前的列數    func numberOfComponents(in pickerView: UIPickerView) -> Int {        return 5    }    ////確定每一列返回的東西    func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {                switch component {        case 0:            return yearRange        case 1:            return 12        case 2:            return dayRange        case 3:            return 24        case 4:            return 60        default:            return 0        }                   }    //MARK:UIPickerViewDelegate    //返回一個視圖,用來設置pickerView的每行顯示的內容。    func pickerView(_ pickerView: UIPickerView, viewForRow row: Int, forComponent component: Int, reusing view: UIView?) -> UIView {                       let label  = UILabel(frame: CGRect(x: screenWidth * CGFloat(component) / 6 , y: 0, width: screenWidth/6, height: 30))                label.font = UIFont.systemFont(ofSize: CGFloat(mylableSize))                label.tag = component*100+row                label.textAlignment = .center                switch component {        case 0:                        label.frame=CGRect(x:5, y:0,width:screenWidth/4.0, height:30);                                   label.text="/(self.startYear + row)年";                    case 1:                        label.frame=CGRect(x:screenWidth/4.0, y:0,width:screenWidth/8.0, height:30);                                    label.text="/(row + 1)月";        case 2:                        label.frame=CGRect(x:screenWidth*3/8, y:0,width:screenWidth/8.0, height:30);                                    label.text="/(row + 1)日";        case 3:                       label.textAlignment = .right                        label.text="/(row )時";        case 4:                        label.textAlignment = .right                        label.text="/(row )分";        case 5:                        label.textAlignment = .right                        label.frame=CGRect(x:screenWidth/6, y:0,width:screenWidth/6.0 - 5, height:30);                                   label.text="/(row )秒";             default:            label.text="/(row )秒";        }                                        return label                    }            //當點擊UIPickerView的某一列中某一行的時候,就會調用這個方法    func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {        switch component {        case 0:            self.selectedYear = self.startYear + row                        self.dayRange = self.isAllDay(year: self.startYear, month: self.selectedMonth)                        self.pickerView.reloadComponent(2)        case 1:            self.selectedMonth =  row + 1                        self.dayRange = self.isAllDay(year: self.startYear, month: self.selectedMonth)                        self.pickerView.reloadComponent(2)        case 2:            selectedDay = row + 1        case 3:            selectedHour = row        case 4:            selectedMinute = row        case 5:            selectedSecond = row        default:            selectedSecond = row        }                    }}調用:

 //打開時間選擇器02    func gotoDatePick02(index:IndexPath)  {        

 

  //需要初始化數據        self.lyjdatePick02.initData()

self.lyjdatePick02.canButtonReturnB = { debugPrint("我要消失了哈哈哈哈哈哈") self.view.ttDismissPopupViewControllerWithanimationType(TTFramePopupViewSlideBottomTop) } self.lyjdatePick02.sucessReturnB = { returnValue in self.view.ttDismissPopupViewControllerWithanimationType(TTFramePopupViewSlideBottomTop) debugPrint("我要消失了哈哈哈哈哈哈") //第二行 var model = self.promptlist[ index.row] model.infoValue = returnValue self.promptlist[index.row] = model self.tableView.reloadData() } self.gototargetView(_targetView:self.lyjdatePick02) } //MARK:打開底部彈出view func gototargetView(_targetView:UIView) { self.view.ttPresentFramePopupView(_targetView, animationType: TTFramePopupViewSlideBottomTop) { // debugPrint("我要消失了") } _targetView.snp.makeConstraints { (make) in make.leading.trailing.bottom.equalTo(self.view) make.height.equalTo(250) } }


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美电影在线观看网站| 久久免费在线观看| 91a在线视频| 久久久www成人免费精品| 久久国产精品网站| 91精品国产91久久久久久吃药| 日韩激情av在线免费观看| 欧美另类69精品久久久久9999| 美女视频黄免费的亚洲男人天堂| 日韩国产精品一区| 国产丝袜一区二区| 日韩在线精品视频| 亚洲精品小视频在线观看| 日韩美女av在线免费观看| 在线a欧美视频| 黑人狂躁日本妞一区二区三区| 欧美一级bbbbb性bbbb喷潮片| 色悠悠国产精品| 视频在线一区二区| 97免费中文视频在线观看| 国产69精品99久久久久久宅男| 色偷偷偷亚洲综合网另类| 78m国产成人精品视频| 2019精品视频| 亚洲视频axxx| 久久影院模特热| 久久精品视频亚洲| 国产精品久久91| 性欧美办公室18xxxxhd| 精品成人国产在线观看男人呻吟| 一本一本久久a久久精品综合小说| 91亚洲精品久久久久久久久久久久| 亚洲另类激情图| 精品亚洲aⅴ在线观看| 日韩精品在线第一页| 一区二区三区日韩在线| 亚洲国产精品va在线看黑人| 亚洲精品国产精品乱码不99按摩| 国产亚洲精品美女久久久久| 亚洲丁香久久久| 国产精品高潮呻吟久久av黑人| 日韩欧美一区二区三区久久| 国产丝袜一区二区三区| 欧美老少做受xxxx高潮| 97不卡在线视频| 欧美亚洲国产精品| 久久久人成影片一区二区三区观看| 国产成人福利视频| 久久久久久国产精品| 97不卡在线视频| 成人黄色av免费在线观看| 欧美寡妇偷汉性猛交| 久久久精品美女| 国产精品一香蕉国产线看观看| 亚洲第一精品夜夜躁人人躁| 黑人欧美xxxx| 欧美精品在线极品| 国产精品美女呻吟| 九九久久久久99精品| 日韩av中文字幕在线| 日韩免费av一区二区| 午夜精品蜜臀一区二区三区免费| 欧美高清在线视频观看不卡| 免费91麻豆精品国产自产在线观看| 日韩中文字幕不卡视频| 欧美一区二区三区免费观看| 日韩欧美a级成人黄色| 在线观看91久久久久久| 色偷偷偷综合中文字幕;dd| 久久久免费精品视频| 不卡毛片在线看| 精品久久国产精品| 亚洲精品电影网在线观看| 欧美激情精品久久久| 国产精品av网站| 日韩经典中文字幕| 久久久天堂国产精品女人| 色综合久久88色综合天天看泰| 国产精品爽黄69| 久久久99久久精品女同性| 国产精品久久久久久久久久99| 欧美肥老太性生活视频| 欧美日韩国产页| 精品国模在线视频| 亚洲毛片一区二区| 日韩美女视频免费在线观看| 久久久国产精品视频| 国产精品对白刺激| 久久全球大尺度高清视频| 日韩在线视频观看正片免费网站| 日韩美女av在线免费观看| 亚洲国产精品免费| 国产69精品久久久久久| 日韩电影中文字幕在线观看| 国产精品国产亚洲伊人久久| 日本一欧美一欧美一亚洲视频| 国产精品一二三视频| 三级精品视频久久久久| 久久精品美女视频网站| 日韩精品在线观| 国产噜噜噜噜噜久久久久久久久| 国产精品高潮粉嫩av| 91精品国产91久久久久| 日本午夜人人精品| 日韩亚洲精品视频| 国产日韩欧美电影在线观看| 成人妇女免费播放久久久| 精品国产电影一区| 一区二区三区亚洲| 精品久久久久久久久久国产| 一区二区三欧美| 日产精品久久久一区二区福利| 日韩视频精品在线| 日韩电影在线观看免费| 久久久久成人网| 日韩国产精品亚洲а∨天堂免| 91久久久久久久久久久| 日日骚久久av| 日韩免费在线看| 亚洲性生活视频| 青青草国产精品一区二区| 欧美老肥婆性猛交视频| 国产精品揄拍500视频| 欧美一区二区三区精品电影| 久久国产精品首页| 亚洲人av在线影院| 亚洲乱码国产乱码精品精天堂| 亚洲成av人乱码色午夜| 成人免费xxxxx在线观看| 欧美性20hd另类| 欧美大全免费观看电视剧大泉洋| 91九色视频导航| 萌白酱国产一区二区| 亚洲在线视频福利| 日韩国产激情在线| 欧美激情综合亚洲一二区| 55夜色66夜色国产精品视频| 精品国产成人av| 久久精品亚洲热| 久久久亚洲影院你懂的| 欧美激情欧美狂野欧美精品| 欧美日韩国产区| 2018中文字幕一区二区三区| 国产一区二区日韩| 国产精品免费一区豆花| 久久久www成人免费精品| 中文字幕久久精品| 最新国产精品拍自在线播放| 亚洲级视频在线观看免费1级| 日韩精品在线电影| 欧美精品在线看| 久久伊人免费视频| 青青久久av北条麻妃黑人| 成人97在线观看视频| 久久久999国产精品| 久久精品亚洲国产| 精品亚洲夜色av98在线观看| 日韩有码视频在线| 中文字幕亚洲无线码a| 97国产在线观看| 91精品在线一区| 亚洲激情视频网站| 欧美大奶子在线| 尤物yw午夜国产精品视频|