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

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

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

2019-11-09 17:13:39
字體:
來源:轉載
供稿:網友

相信很多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
亚洲欧洲成视频免费观看| 97视频人免费观看| 欧美资源在线观看| zzijzzij亚洲日本成熟少妇| 粗暴蹂躏中文一区二区三区| 国产亚洲欧洲在线| 欧美日韩国内自拍| 午夜精品久久久久久久久久久久| 91高清视频免费| 日韩精品欧美国产精品忘忧草| 久久91亚洲精品中文字幕| 日本精品免费一区二区三区| 久久精品国产99国产精品澳门| 97国产精品免费视频| 国产成人久久久| 日韩av免费看网站| 亚洲精品视频网上网址在线观看| 欧美性极品少妇精品网站| 隔壁老王国产在线精品| 伊人伊人伊人久久| 91亚洲精品一区二区| 精品国产电影一区| 亚洲天堂男人天堂女人天堂| 亚洲欧洲午夜一线一品| 国产亚洲欧美日韩精品| 国内揄拍国内精品少妇国语| 亚洲自拍偷拍在线| 456国产精品| 成人激情视频免费在线| 欧美日韩国产第一页| 精品中文字幕在线观看| 亚洲男人av电影| 91探花福利精品国产自产在线| 热草久综合在线| 亚洲高清免费观看高清完整版| 亚洲最大的免费| 中文字幕欧美日韩精品| 亚洲丝袜av一区| 国产精品久久久久久影视| 国产免费一区二区三区在线能观看| 国产成人在线亚洲欧美| 蜜臀久久99精品久久久久久宅男| 日韩欧美在线播放| 青青草一区二区| 亚洲第一网站男人都懂| 欧美xxxx做受欧美| 日韩久久午夜影院| 亚洲国产精品字幕| 国产mv久久久| 欧美视频免费在线| 亚洲精品资源在线| 性欧美长视频免费观看不卡| 91久久精品国产91性色| 欧美激情精品久久久久久免费印度| 国产成人综合久久| 国产成人在线一区| 亚洲精品日韩欧美| 日韩在线一区二区三区免费视频| 国产精品久久久久av免费| 亚洲理论在线a中文字幕| 久久影院中文字幕| 国产高清视频一区三区| 国产91色在线免费| 亚洲最大av网| 亚洲一区二区三区四区在线播放| 亚洲国产精品大全| 久久激情五月丁香伊人| 亚洲春色另类小说| 亚洲男人av电影| 国产小视频91| 色在人av网站天堂精品| 人九九综合九九宗合| 国内精品久久久久久中文字幕| 国模私拍视频一区| 992tv成人免费影院| 精品亚洲va在线va天堂资源站| 国产精品极品在线| 亚洲精品电影网| 91免费的视频在线播放| 欧美大学生性色视频| 亚洲va久久久噜噜噜| 欧美裸体xxxx极品少妇| 欧美亚洲第一页| www.亚洲免费视频| 好吊成人免视频| 色综合天天综合网国产成人网| 欧美激情手机在线视频| 国产在线不卡精品| 亚洲欧洲视频在线| 一区二区三区美女xx视频| 78色国产精品| 亚洲第一天堂无码专区| 亚洲曰本av电影| 日韩免费电影在线观看| 日韩高清a**址| 精品在线小视频| 国产在线观看一区二区三区| 日韩av在线网| 在线视频亚洲欧美| 国产97在线播放| 欧美性猛交xxxx黑人猛交| 亚洲欧美中文日韩v在线观看| 亚洲精品二三区| www高清在线视频日韩欧美| 狠狠做深爱婷婷久久综合一区| 亚洲精品www久久久| 日韩成人中文字幕在线观看| 国产aaa精品| 91精品国产91久久久久久| 全亚洲最色的网站在线观看| 国内外成人免费激情在线视频网站| 亚洲激情久久久| 在线播放日韩专区| 欧美一区二区三区免费视| 综合激情国产一区| 国产日韩中文字幕在线| 国产成人亚洲综合| 久久琪琪电影院| 日韩美女在线观看| 国产日韩精品综合网站| 日本精品久久中文字幕佐佐木| www.久久撸.com| 日韩一级裸体免费视频| 国产精品福利小视频| 国产精品一区av| 人人澡人人澡人人看欧美| 色与欲影视天天看综合网| 欧美制服第一页| 欧美日韩亚洲成人| 亚洲一区亚洲二区| 国产精品久久久久不卡| 91精品美女在线| 精品中文字幕在线2019| 亚洲欧美日韩区| 亚洲国产精品高清久久久| 亚洲女成人图区| 亚洲一区中文字幕| 亚洲精品美女在线观看播放| 国产精品扒开腿做| 亚洲欧美国产日韩天堂区| 久久综合久久美利坚合众国| 国产成人精品免高潮费视频| 国产精品aaaa| 精品美女永久免费视频| 久久国产精品久久精品| 91精品国产免费久久久久久| 亚洲a在线播放| 欧美性猛交xxxx偷拍洗澡| 一本大道久久加勒比香蕉| 69视频在线播放| 久久中文字幕国产| 中文字幕日韩有码| 亚洲精品wwwww| 亚洲天堂av网| 国产脚交av在线一区二区| 中文字幕日韩视频| 日韩欧美国产免费播放| 日韩第一页在线| 欧美激情亚洲精品| 黄色一区二区三区| 欧美一级大片在线观看| 欧美成人在线免费| 久久综合久久八八| 欧美视频免费在线观看|