在手表上使用 WidgetKit 时,我不知道如何设置此文本的样式以使其看起来正确。问题是,在 Am/Pm 时间样式合适的位置,系统仅将 M 换行到下一行,而我希望 AM 和 PM 都换行到第二行。在使用 24 小时制的地方,不应有 AM 和 PM。我怎样才能实现这个目标?
static let sleepTimeFormat: DateFormatter = {
let formatter = DateFormatter()
formatter.dateStyle = .none
formatter.timeStyle = .short
return formatter
}()
Text("\(targetBedTime, formatter: Self.sleepTimeFormat)")
.font(.system(size: 14))
.fontWeight(.bold)
您可以使用
ViewThatFits
加上用换行符替换空格来完成此操作。
extension String {
self.components(separatedBy: characterSet).joined(separator: replacementString)
}
let timeString = Self.sleepTimeFormat.string(from: .now)
ViewThatFits {
Text(timeString).lineLimit(1)
Text(timeString.replaceCharacters(from: .whitespaces, with: "\n"))
}
.font(.system(size: 14))
.fontWeight(.bold)
.frame(width: 50) // Ensure second option gets displayed