テクノモンキーのアプリ開発日記

テクノモンキーの開発ブログです。iOS、Android、Unity、Cocos2d-xなどアプリ開発関連のTipsやアプリ開発に役立つ情報を発信します。

FSCalendarで祝日を判定してカレンダーに表示する方法【iOSアプリ開発】

FSCalendarでカレンダーに祝日を表示する方法に関するメモ。

FSCalendarでカレンダーに祝日を表示したい場合は、「CalculateCalendarLogic」というライブラリを使えば簡単に実装できます。


FSCalendarでカレンダーに祝日を表示する方法


まずCocoaPodsで「CalculateCalendarLogic」を使えるようにします。

//XcodeのPodfileに記述
pod 'CalculateCalendarLogic'


祝日判定とFSCalendarでの表示は以下の実装でOKです。

// 祝日判定を行い結果を返すメソッド(True:祝日)
    func judgeHoliday(_ date : Date) -> Bool {
        //祝日判定用のカレンダークラスのインスタンス
        let tmpCalendar = Calendar(identifier: .gregorian)
        // 祝日判定を行う日にちの年、月、日を取得
        let year = tmpCalendar.component(.year, from: date)
        let month = tmpCalendar.component(.month, from: date)
        let day = tmpCalendar.component(.day, from: date)
        
        // CalculateCalendarLogic():祝日判定のインスタンスの生成
        let holiday = CalculateCalendarLogic()
        
        return holiday.judgeJapaneseHoliday(year: year, month: month, day: day)
    }


// date型 -> 年月日をIntで取得
    func getDay(_ date:Date) -> (Int,Int,Int){
        let tmpCalendar = Calendar(identifier: .gregorian)
        let year = tmpCalendar.component(.year, from: date)
        let month = tmpCalendar.component(.month, from: date)
        let day = tmpCalendar.component(.day, from: date)
        return (year,month,day)
    }
    
//曜日判定(日曜日:1 〜 土曜日:7)
    func getWeekIdx(_ date: Date) -> Int{
        let tmpCalendar = Calendar(identifier: .gregorian)
        return tmpCalendar.component(.weekday, from: date)
    }
    
// 土日や祝日の日の文字色を変える
    func calendar(_ calendar: FSCalendar, appearance: FSCalendarAppearance, titleDefaultColorFor date: Date) -> UIColor? {
        
       
        //祝日判定をする(祝日は赤色で表示する)
        if self.judgeHoliday(date){
            return UIColor.red
        }
        //土日の判定を行う(土曜日は青色、日曜日は赤色で表示する)
        let weekday = self.getWeekIdx(date)
        if weekday == 1 {   //日曜日
            return UIColor.red
        }
        else if weekday == 7 {  //土曜日
            return UIColor.blue
        }
        return nil
    }

日記アプリでカレンダーに祝日を表示する際に実装しました↓





ちなみに、曜日(月火水木金土日)の表記の色を変更したい場合については以下でまとめてます↓

develop.hateblo.jp


関連:

【iOSアプリ開発】FSCalendarを使えばカレンダーアプリが簡単に作れる!(日記アプリ開発) - テクノモンキーのアプリ開発日記
写真も貼れるシンプルな日記アプリ、Nikkyをリリースしました! - テクノモンキーのアプリ開発日記