我想以iOS系统时钟的形式显示时间(大写字母的时间,一天中的小部分,但大写)。
我知道我需要属性字符串的帮助,但是我不知道如何使其与不同的时间显示格式(12和24小时),不同的语言和本地位置兼容。
答案 0 :(得分:0)
要根据用户区域设置以字符串表示形式获取时间,可以使用:
let formatter = DateFormatter()
formatter.timeStyle = DateFormatter.Style.short //Or in short formatter.timeStyle = .short
let time = formatter.string(from: Date())
例如,对于俄罗斯,您返回23:47,对于美国,则返回11:47 PM。
然后,我们可以检查用户区域设置是否返回了带有日期部分的时间格式。如果是这样,我们将为字符串中的最后两个字符设置另一种字体,这是我们的日常工作。
if let range = time.range(of: formatter.amSymbol) ?? time.range(of: formatter.pmSymbol) {
let fontSize: CGFloat = 8.0
let nsRange = NSRange(range, in: time)
let attrString = NSMutableAttributedString(string: time)
attrString.addAttributes([.font: UIFont.systemFont(ofSize: fontSize)], range: nsRange)
label.attributedText = attrString
} else {
label.text = time
}