ios – change selection color in FSCalenar in swiftui


struct CustomCalendar: UIViewRepresentable {
   
    typealias UIViewType = FSCalendar
    
    @Binding var calendarModel : CalendarModel
    @Binding var pageCurrent: Date
    var calendar = FSCalendar()
func makeUIView(context: Context) -> FSCalendar {
        calendar.delegate = context.coordinator
        calendar.dataSource = context.coordinator
        calendar.allowsMultipleSelection = true;
        calendar.scope = .month
        calendar.firstWeekday = 1
        calendar.appearance.borderRadius = 20
        calendar.today = nil
        calendar.appearance.weekdayTextColor = .black
        calendar.clipsToBounds = true
        calendar.appearance.weekdayTextColor = .gray
        calendar.locale =  Locale(identifier: "en_US")
        calendar.calendarHeaderView.isHidden = true
        calendar.headerHeight = 0.0
        context.coordinator.setRangeToCalender(from: calendarModel.startDay, to: calendarModel.endDay) ///set rang to calendar when call edit
      
       
        return calendar
    }
    
    func updateUIView(_ uiView: FSCalendar, context: Context) {
//        calendar.reloadData()
        uiView.setCurrentPage(pageCurrent, animated: true) /// --->> update calendar view when click on left or right button
        uiView.reloadData()
    }
class Coordinator: NSObject, FSCalendarDelegate, FSCalendarDataSource {
        
        var parent: CustomCalendar
        
        init(_ parent: CustomCalendar) {
            self.parent = parent
        }
 func setDataToCalender(ranges:[SelectionModel]) {
            parent.calendarModel.dateRanges = ranges
            parent.calendar.reloadData()
            for range in ranges {
                setRangeToCalender(from: range.startDate, to: range.endDate)
            }
           
        }
 func calendar(_ calendar: FSCalendar, appearance: FSCalendarAppearance, fillSelectionColorFor date: Date) -> UIColor? {
            for range in parent.calendarModel.dateRanges {
                if date >= range.startDate && date <= range.endDate {
                    return range.color
                }
            }
            
            return UIColor(Color.theme.secondary)
        }
}

ineed solution for this

Latest articles

spot_imgspot_img

Related articles

Leave a reply

Please enter your comment!
Please enter your name here

spot_imgspot_img