UIDatePicker - 日付取得 (文字の色を無理矢理変更)

f:id:oynop:20150227201516p:plain:h300

説明

UIDatePickerはUIControlのサブクラス
文字の色の設定がデフォルトではできなかったため,無理矢理文字の色を変えてみた.

ソースコード

UIDatePickerSample.swift

import UIKit
class UIDatePickerSample: UIView {

    // 文字色を変更するためのUIDatePickerのサブクラス
    // !!! これはAppleの意図したやり方ではない !!!
    class MYDatePicker: UIDatePicker {
        override init(frame: CGRect) {
            super.init(frame: frame)
            self.setValue(colorPattern.accent(), forKey: "textColor")
        }
        required init(coder aDecoder: NSCoder) {
            fatalError("init(coder:) has not been implemented")
        }
    }

    override init(frame: CGRect) {
        super.init(frame: frame)
        self.backgroundColor = colorPattern.back()
        let dp = MYDatePicker(frame: CGRectMake(0, 0, 200, 200))
        self.addSubview(dp)
        dp.center = self.center
        
        // 形式を指定(Time, Date, DateAndTime, CountDownTimer)
        dp.datePickerMode = UIDatePickerMode.DateAndTime

        // 値が変わった時の処理を指定
        dp.addTarget(self, action: "datePickerChanged:", forControlEvents: UIControlEvents.ValueChanged)
    }
    func datePickerChanged(sender: UIDatePicker) {
        // 取得したものを表示
        println(sender.date)
    }

    required init(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
}

ViewController.swift

import UIKit
class ViewController: UIViewController {
    override func viewDidLoad() {       
        super.viewDidLoad()
        self.view.backgroundColor = colorPattern.back()
        self.view.addSubview(UIDatePickerSample(frame: self.view.frame))
    }
   
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }
}