Swiftワン・ピース・コード:UIDatePickerを使用する
こんにちは。川上です。
BalloonViewに日付ピッカーを組み込んで、日時データの更新処理をしました。
で、その動作感じは、⬇️です。
先ずは、UIDatePickerのInit処理からでした。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 | var myDatePicker: UIDatePicker! // 日付ピッカー var ovrPickerNowBtn:UIButton! //Nowボタン var ovrPickerDownBtn:UIButton! //Downボタン //MARK: === ピッカー(Picker)の作成 func initDatePicker() { // DatePickerを生成する. myDatePicker = UIDatePicker() let picker_x: CGFloat = ovrBallowView.triangleHeight let picker_y: CGFloat = ovrBallowView.triangleHeight let picker_w: CGFloat = ovrBallowView.frame.width - picker_x*2 let picker_h: CGFloat = ovrBallowView.frame.height - picker_y * 2 // datePickerを設定(デフォルトでは位置は画面上部)する. myDatePicker.frame = CGRect(x:picker_x, y:picker_y, width:picker_w, height:picker_h) myDatePicker.backgroundColor = UIColor.white myDatePicker.layer.cornerRadius = 5.0 myDatePicker.layer.shadowOpacity = 0.5 myDatePicker.locale = NSLocale(localeIdentifier: "ja_JP") as Locale myDatePicker.timeZone = NSTimeZone.local myDatePicker.tag = TAG_BALLOW_DATE_PICKER // 値が変わった際のイベントを登録する. myDatePicker.addTarget(self, action: #selector(MainRegNtyVwController.onDidChangeDate(sender:)), for: .valueChanged) ovrBallowView.addSubview(myDatePicker) // 起動日付の表示フォーマット dateLable.text = dateLableToStr(Date()) // MARK: --- "Today"ボタン ovrPickerNowBtnを作成 =========== let svbtnX :CGFloat = 0 let lrbtnY :CGFloat = 0 //ovbtnWH + ovbtnWH / 3 ovrPickerNowBtn = UIButton(frame: CGRect(x:svbtnX, y:lrbtnY, width:60 , height:40 )) ovrPickerNowBtn.addTarget(self, action: #selector(MainRegNtyVwController.clickedBtn(_:)), for: .touchUpInside) ovrPickerNowBtn.setTitle("Today", for: .normal) ovrPickerNowBtn.setTitleColor(UIColor.black, for: UIControlState.normal) ovrPickerNowBtn.setTitleColor(UIColor.red, for: UIControlState.highlighted) ovrPickerNowBtn.backgroundColor = UIColor.yellow ovrPickerNowBtn.layer.cornerRadius = 5 //角丸 ovrPickerNowBtn.layer.borderWidth = 2.0 // 枠線の幅 ovrPickerNowBtn.layer.borderColor = UIColor.black.cgColor // 枠線の色 ovrPickerNowBtn.center = CGPoint(x: ovrBallowView.frame.width - 100 , y: ovrBallowView.frame.height - 20 ) ovrInfoToolBtn.tag = TAG_BALLOW_PICER_NOWBTN ovrBallowView.addSubview(ovrPickerNowBtn) // MARK: ---- ”Down”ボタンovrPickerDownBtnを作成 =========== ovrPickerDownBtn = UIButton(frame: CGRect(x:svbtnX, y:lrbtnY, width:60 , height:40 )) ovrPickerDownBtn.addTarget(self, action: #selector(MainRegNtyVwController.clickedBtn(_:)), for: .touchUpInside) ovrPickerDownBtn.setTitle("✅", for: .normal) //ボタンタイトルのフォントサイズ ovrPickerDownBtn.titleLabel?.font = UIFont.systemFont(ofSize: 40)//25 ovrPickerDownBtn.center = CGPoint(x: ovrBallowView.frame.width - 30 , y: ovrBallowView.frame.height - 20 ) ovrPickerDownBtn.tag = TAG_BALLOW_PICER_DOWNBTN ovrBallowView.addSubview(ovrPickerDownBtn) //MARK:ovrBallowView内Btnの表示ONOff myDatePicker.isHidden = true ovrPickerNowBtn.isHidden = true } |
UIDatePickerの値が変わった時に受けたイベント処理です。
1 2 3 4 5 6 7 8 9 10 11 | // MARK: === DatePickerが選ばれた際に呼ばれる. @objc internal func onDidChangeDate(sender: UIDatePicker){ // 起動日付の表示フォーマット dateLable.text = dateLableToStr(sender.date) // ovrSaveToolBtn ーー 表示On/Off ovrSaveToolBtnisHiddenOnOff(hidden: false) // MARK: == リマインダデータの保存データ rmdSaveDate = sender.date } |
概ね、キモそうなところは記載できたと思います。
後は、それなりに、行間で・・・ね。
ではでは。