欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

定制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,幸福感满满:


定制Github日历库EPCalendarPicker实现项目需求(二)

相关标签: iOS 日历 定制