2017-06-18 53 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) : "" 
}