SwiftUI 和 WidgetKit:让 AM 和 PM 换行至第二行

问题描述 投票:0回答:1

在手表上使用 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)

swiftui apple-watch watchos widgetkit apple-watch-complication
1个回答
0
投票

您可以使用

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

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.