EYCalendar is a versatile and customizable calendar component designed for developers seeking a feature-rich solution for their applications.


Dark Mode White Mode

Key Features:

Dual Calendar Types:

The calendar supports both the Gregorian and Islamic calendars. Developers can easily switch between the two calendar types with a toggle switch.

##Customizable Themes: Developers have the flexibility to change the theme color of the calendar to seamlessly integrate with their application’s design. A variety of predefined themes are included, and developers can also define custom color schemes.

Start Date and Month Configuration:

Set the starting date for the calendar to align with your application's requirements.
Choose the number of months to display, providing flexibility in the calendar's duration.

Font Customization:

Users can customize the font used in the calendar, ensuring consistency with the overall application design.
A selection of fonts is available, and developers can also integrate custom fonts.

Flag for Islamic Calendar:

When using the Islamic calendar, a flag is displayed to indicate the calendar type, making it clear for users.
The flag is easily toggleable, allowing users to switch between a standard calendar view and an Islamic calendar view.

Single Calendar Mode:

For simplicity, users can choose to use the calendar in a single mode, either as a standard Gregorian calendar or an Islamic calendar.

RTL Support:

Add a configuration option for RTL support in your calendar component.
Adjust styles and layouts based on the RTL setting.



Add this to your podfile for the latest version

pod 'EYCalendar'

Or specify desired version

pod 'EYCalendar', '~> 1.0.0'

Manual Installation

Download and include the EYCalendar folder and files in your codebase.


  • iOS 13+
  • Swift 5

How to use

// This is in your application
   class ViewController: UIViewController {
    private let calendar:EYCalendar = {
        let configurations = EYCalendarConfigration(startDate: Date() , NoMonths: 24 , themeColor: .blue, font: UIFont.systemFont(ofSize: 14, weight: .bold) , isLamicCalendarOnly: true)
        let calendar = EYCalendar(configuration: configurations)
        return calendar
    override func viewDidLoad() {
        calendar.delegate = self
        calendar.snp.makeConstraints { make in
extension ViewController: CalendarDelegate{
    func daySelected(indexPath: IndexPath, day: Day?) {
        guard let day = day else {return}
        if day.isWithinDisplayedMonth {
            print("day number \(day.number)")
    func monthDidDisplayed(monthIndex: Int, month: Month) {


View Github