2017-06-18 6 views
1

Comment configurer FSCalendar pour prendre en charge les numéros de langue RTL?Personnaliser FSCalendar pour RTL

Voici le code que je utilise

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"]; 

Lorsque je lance l'affichage du calendrier, je ne peux pas obtenir les dates pour afficher en utilisant les chiffres de langue correcte

enter image description here Comme vous pouvez le voir que le contenu partiel est affiché correctement. Je suis sur iOS 10.

@WenchaoD Avez-vous des idées pour que cela fonctionne?

+0

FSCalendar ne prend pas en charge le mode RTL, s'il vous plaît vérifier pod: https://github.com/MosheBerman/MBCalendarKit – Maor

+0

Ne supporte pas RTL. Essayez d'utiliser [Celui-ci] (https://github.com/patchthecode/JTAppleCalendar). Tutoriels complets trouvés [ici] (https://www.youtube.com/watch?v=wyh_DVFeH_w&list=PLpqJf39XekqyUG7dxcqGO0JNprryysv9Q) –

Répondre

0

RTL complet n'est pas possible dans FSCalendar, nous pouvons ajouter des chiffres arabes au calendrier.

Voici ma solution, il a résolu mon problème d'espoir qu'il satisfera votre exigence.

Dans cette solution, j'ai utilisé la possibilité d'option de titre dans FSCAlendar.En faisant cela, les utilisateurs avec la langue arabe peuvent facilement utiliser le calendrier.

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) : "" 
}