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

版权声明:大熊猫猪·侯佩原创或翻译作品.谢绝转载! hopy https://blog.csdn.net/mydo/article/details/82178932

二.日历界面国际化

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


这里写图片描述

猜你喜欢

转载自blog.csdn.net/mydo/article/details/82178932