テックキャンプ159日目〜extensionとFSCalendarDelegate

kobasaです(´ω`*)
FSCalendarをさらにカスタマイズするためにDelegateについて勉強していました。
ついでに日本の祝日判定を行ってくれるCalculateCalendarLogicというpodも読み込みます。

まずはviewDidLoad内にテーブルでも使用した委任の記述をします。

calendar.delegate = self
calendar.dataSource = self

次にクラスにもDelegateの記述をするのですが、ここで可読性を高めるために
教本ではextensionというものを使用しています。
extensionは拡張という意味で、コントローラーの今までの処理を引き継ぎつつ
まとまった処理を追記したいときに使用するようです。
クラス外に新しく拡張したクラスを記述する感じ。

import UIKit
import FSCalendar
import CalculateCalendarLogic

class HealthCheckViewController: UIViewController {
    // 今までの処理
}

extension HealthCheckViewController: FSCalendarDataSource, FSCalendarDelegate, FSCalendarDelegateAppearance {
    // FSCalendarDelegateの処理をまとめる
}

追記したextension内にDelegateを使用した処理を記述していきます。

// 日付マスの背景色を設定。backgroundColorではない
func calendar(_ calendar: FSCalendar, appearance: FSCalendarAppearance, fillDefaultColorFor date: Date) -> UIColor? {
    return .clear
}
// 日付マスの枠線の色を設定。
func calendar(_ calendar: FSCalendar, appearance: FSCalendarAppearance, borderDefaultColorFor date: Date) -> UIColor? {
    return .clear
}
// 日付マスの枠線の角丸の度合いを設定。
func calendar(_ calendar: FSCalendar, appearance: FSCalendarAppearance, borderRadiusFor date: Date) -> CGFloat {
    return 0.5
}
// 日付の文字色を設定。
func calendar(_ calendar: FSCalendar, appearance: FSCalendarAppearance, titleDefaultColorFor date: Date) -> UIColor? {
    return colors.black
}

色々設定できます。土日祝なら色を変更したり、本日のマスだけ枠線を表示したりなど
見栄えの良くなる設定もしていました。次回に書きます(´ω`*)
(デフォルトの状態なら最初から設定済。オリジナルにカスタムするなら記述が必要)

コメント

タイトルとURLをコピーしました