SwiftUI自定义百分比格式percent
SwiftUI自定义百分比格式percent

SwiftUI自定义百分比格式percent

在 SwiftUI 中,.percent 格式化器用于显示数值作为百分比。然而,默认情况下,它可能显示多位小数,例如 0.12345 会格式化为 12.345%。

Text(accessProgress,format: .percent)

如果希望限制显示的小数位数,可以通过以下方法自定义百分比格式。

解决方法

1、使用 .formatted() 自定义小数位数

通过 .formatted() 方法指定小数位数:

let accessProgress = 0.12345 // 示例值
Text(accessProgress.formatted(.percent.precision(.fractionLength(0...2))))

解释

.fractionLength(0…2) 表示小数位数在 0 到 2 位之间。

.fractionLength(0) 表示不显示小数。

.fractionLength(2) 表示显示 2 位小数。

.fractionLength(1…2) 表示显示 1 到 2 位小数。

2、使用 .NumberFormatter 进行更复杂的格式化

如果需要更精确的控制,可以使用 NumberFormatter:

import Foundation

let formatter: NumberFormatter = {
    let formatter = NumberFormatter()
    formatter.numberStyle = .percent
    formatter.minimumFractionDigits = 0
    formatter.maximumFractionDigits = 2
    return formatter
}()

let accessProgress = 0.12345
Text(formatter.string(from: NSNumber(value: accessProgress)) ?? "")

3、直接在 Text 显示简化格式

通过简单的字符串格式化:

let accessProgress = 0.12345
Text("\((accessProgress * 100).formatted(.number.precision(.fractionLength(2))))%")

推荐方式

使用方法 1 是最简单和现代的方式,特别是当使用 SwiftUI 的 Text 时:

Text(accessProgress.formatted(.percent.precision(.fractionLength(2))))

这可以直接完成所需的百分比格式化并且代码清晰。

如果您认为这篇文章给您带来了帮助,您可以在此通过支付宝或者微信打赏网站开放者。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注