麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

swift3.0 包含年月日十分 時間選擇器的實現(xiàn)

2019-11-09 17:13:39
字體:
供稿:網(wǎng)友

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

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

效果圖:

view代碼:

////  LYJDatePicker02.swift//  MyswiftDemo////  Created by Liyanjun on 2017/2/8.//  Copyright © 2017年 hand. All rights reserved.//import UIKit/// 這是時間選擇器,實現(xiàn) yyyy-mm-dd HH:mi:ssclass LYJDatePicker02: UIView {    var canButtonReturnB: (() -> Void)? //取消按鈕的回調(diào)        var sucessReturnB: ((_ date:String) -> Void)?//選擇的回調(diào)            var title = UILabel.init(lableText: "選擇時間")//標(biāo)題        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)"                            }                } //返回的時間字符串                //數(shù)據(jù)相關(guān)    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:初始化數(shù)據(jù)    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:設(shè)置標(biāo)題    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:設(shè)置取消按鈕    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:設(shè)置確定按鈕    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:設(shè)置橫線    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當(dāng)前的列數(shù)    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    //返回一個視圖,用來設(shè)置pickerView的每行顯示的內(nèi)容。    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                    }            //當(dāng)點擊UIPickerView的某一列中某一行的時候,就會調(diào)用這個方法    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        }                    }}調(diào)用:

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

 

  //需要初始化數(shù)據(jù)        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) } }


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 国产精品久久久久久婷婷天堂 | 欧美激情图区 | 国产精品久久99精品毛片三a | 一级黄色淫片 | 精品人人人人 | 手机国产乱子伦精品视频 | 免费观看9x视频网站在线观看 | 免费在线观看国产精品 | 黄色av电影在线播放 | 911网站大全在线观看 | 成人宗合网 | 国产成人自拍小视频 | 国产一级爱c视频 | 欧美成人性色区 | 五月天堂av91久久久 | 精品一区二区三区日本 | 午夜生活理论片 | 国产喷白浆10p | 欧美一级淫片007 | 欧美黄色大片免费观看 | 99视频在线观看视频 | 久久精品中文 | 性明星video另类hd | 91 免费看片 | 欧美人的天堂一区二区三区 | 欧美精品一区自拍a毛片在线视频 | 青青草华人在线 | 欧美一级电影网站 | 精品亚洲在线 | 天天色狠狠干 | 欧美中文字幕一区二区三区亚洲 | 国产精品久久久久久久久久久天堂 | 欧美性生活久久 | 日本黄色免费播放 | 黄色a级片视频 | 神马久久蜜桃 | 日韩黄色精品 | 国产精品久久久久久238 | 91精品国产777在线观看 | 伦理三区| 欧美熟videos肥婆 |