2017-06-18 90 views
1

如何配置FSCalendar以支持RTL語言數字?爲RTL定製FSCalendar

下面是我使用

FSCalendar *calendar = [[FSCalendar alloc] initWithFrame:CGRectMake(0, 0, 300, 320)]; 
calendar.dataSource = self; 
calendar.delegate = self; 
calendar.backgroundColor = [UIColor whiteColor]; 
calendar.appearance.headerMinimumDissolvedAlpha = 0; 
calendar.appearance.caseOptions = FSCalendarCaseOptionsHeaderUsesUpperCase; 
calendar.scrollDirection = FSCalendarScrollDirectionHorizontal; 
calendar.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"ar_AE"]; 

當我啓動日曆視圖,我不能得到的日期,使用正確的語言符號

enter image description here 顯示正如你所看到的只是部分內容的代碼顯示正確。我在iOS 10上。

@WenchaoD對如何讓這個工作有什麼想法?

+0

FSCalendar不支持RTL模式,請檢查該吊艙:https://github.com/MosheBerman/MBCalendarKit – Maor

+0

不支持RTL。嘗試使用[This one](https://github.com/patchthecode/JTAppleCalendar)。找到完整教程[Here](https://www.youtube.com/watch?v=wyh_DVFeH_w&list=PLpqJf39XekqyUG7dxcqGO0JNprryysv9Q) –

回答

0

完整的RTL在FSCalendar中是不可能的,我們可以在日曆中添加阿拉伯數字。

這是我的解決方案,它解決了我的問題,希望它能滿足您的要求。

在這個解決方案中,我使用了FSCAlendar中標題選項的可能性。通過這樣做,阿拉伯語舌頭的用戶可以輕鬆使用日曆。

func showArabicSubTitle(date: Date!) -> String! 
{ 

    let dateFormater = DateFormatter() 
    dateFormater.dateFormat = "dd" 

    var calendarDate = dateFormater.string(from: date as Date) 

    let characters = Array(calendarDate.characters) 

    let substituteArabic = ["0":"٠", "1":"١", "2":"٢", "3":"٣", "4":"٤", "5":"٥", "6":"٦", "7":"٧", "8":"٨", "9":"٩"] 
    var arabicDate = "" 

    for i in characters { 
     if let subs = substituteArabic[String(i)] { 
      arabicDate += subs 
     } else { 
      arabicDate += String(i) 
     } 
    } 

    return arabicDate 
} 

//MARK: - FSCalendarDelegate 

func calendar(_ calendar: FSCalendar, titleFor date: Date) -> String? { 
    return (L102Language.currentAppleLanguage() == "ar") ? self.showArabicSubTitle(date: date) : "" 
}