前提・実現したいこと
SwiftでFSCalendarを利用して、カレンダーアプリを製作中です。カレンダーに旧祝日の日は別の色をつけようと思っていて、以下のサイトを参考にしています。
https://develop.hateblo.jp/entry/2018/10/26/094020
発生している問題
上記のサイトの通りに実装すると、ある月のカレンダーにあるその前の月と次の月の日付の部分まで色が変わってしまいます。例えば、現在表示されている7月の日曜日と祝日だけを別の色にしたいのに、6月の日曜や8月の日曜まで色が変わってしまい、視覚的に今月なのか他の月の日なのか判別しにくくなってしまっています。
該当のソースコード
Swift
1 2// 祝日判定を行い結果を返すメソッド(True:祝日) 3 func judgeHoliday(_ date : Date) -> Bool { 4 //祝日判定用のカレンダークラスのインスタンス 5 let tmpCalendar = Calendar(identifier: .gregorian) 6 // 祝日判定を行う日にちの年、月、日を取得 7 let year = tmpCalendar.component(.year, from: date) 8 let month = tmpCalendar.component(.month, from: date) 9 let day = tmpCalendar.component(.day, from: date) 10 11 // CalculateCalendarLogic():祝日判定のインスタンスの生成 12 let holiday = CalculateCalendarLogic() 13 14 return holiday.judgeJapaneseHoliday(year: year, month: month, day: day) 15 } 16 17 18// date型 -> 年月日をIntで取得 19 func getDay(_ date:Date) -> (Int,Int,Int){ 20 let tmpCalendar = Calendar(identifier: .gregorian) 21 let year = tmpCalendar.component(.year, from: date) 22 let month = tmpCalendar.component(.month, from: date) 23 let day = tmpCalendar.component(.day, from: date) 24 return (year,month,day) 25 } 26 27//曜日判定(日曜日:1 〜 土曜日:7) 28 func getWeekIdx(_ date: Date) -> Int{ 29 let tmpCalendar = Calendar(identifier: .gregorian) 30 return tmpCalendar.component(.weekday, from: date) 31 } 32 33// 土日や祝日の日の文字色を変える 34 func calendar(_ calendar: FSCalendar, appearance: FSCalendarAppearance, titleDefaultColorFor date: Date) -> UIColor? { 35 36 37 //祝日判定をする(祝日は赤色で表示する) 38 if self.judgeHoliday(date){ 39 return UIColor.red 40 } 41 //土日の判定を行う(土曜日は青色、日曜日は赤色で表示する) 42 let weekday = self.getWeekIdx(date) 43 if weekday == 1 { //日曜日 44 return UIColor.red 45 } 46 else if weekday == 7 { //土曜日 47 return UIColor.blue 48 } 49 return nil 50 } 51 52 53
試したこと
ネットで調べてみましたが、表示されている月の日付かを判定する方法の情報は見つかりませんでした。
補足情報(FW/ツールのバージョンなど)
FSCalendar 2.7.9
CalculateCalendarLogic 0.3.0
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/08/04 10:30