定制Github日历库EPCalendarPicker实现项目需求(二)
程序员文章站
2022-06-01 13:38:46
...
二.日历界面国际化
将iOS模拟器中的本地语言改为简体中文,重新运行App发现EPCalendarPicker中的界面还是英文。
主要是其中的月份和星期名称都是英文表示。
那么如何使其显示符合设备所设置的语言呢?
首先我们尝试修改Section标题中的月,找到如下方法:
override open func collectionView(_ collectionView: UICollectionView, viewForSupplementaryElementOfKind kind: String, at indexPath: IndexPath) -> UICollectionReusableView
定位到如下一句:
header.lblTitle.text = firstDayOfMonth.monthNameFull()
可以看到其调用了monthNameFull()方法,打开该方法,在其中添加一句:
func monthNameFull() -> String {
let dateFormatter = DateFormatter()
//添加如下一句
dateFormatter.locale = Locale.current
dateFormatter.dateFormat = "MMMM YYYY"
return dateFormatter.string(from: self)
}
运行App发现月份显示怎么还是英文呢???在上句做一个断点,中断后发现Locale.current还是en_us!?
要想获得设备真正的语言设置,我们不能使用Locale.current,我们需要将原来那句代码替换如下:
dateFormatter.locale = Locale(identifier: Locale.preferredLanguages[0])
现在运行App,OK了!
最后是星期的名称。检查EPCalendarPicker库发现,对于Section头的显示,使用了一个自定义类EPCalendarHeaderView。打开该类,在awakeFromNib方法里同样添加如上一句:
override func awakeFromNib() {
super.awakeFromNib()
var calendar = Calendar.current
//添加如下一句
calendar.locale = Locale(identifier: Locale.preferredLanguages[0])
//其他无关代码...
}
现在运行一下App,幸福感满满: