SwiftUI中TextField输入与输出数字格式统一问题咨询
统一SwiftUI TextField与Text的数字本地化格式
你的问题出在Text视图没有使用和TextField一致的格式化规则,直接通过字符串插值转换Double值会使用默认的字符串表示,和TextField的本地化格式化输出产生差异。
解决方法
给Text应用和TextField完全相同的格式配置,替换原来的字符串插值写法:
修改后的完整代码:
struct HomeView: View { @State var value: Double? var body: some View { VStack { // 使用与TextField一致的format配置 Text(value ?? 0, format: .number.precision(.fractionLength(2))) .font(.title) TextField("0.0", value: $value, format: .number.precision(.fractionLength(2))) .border(.red) .keyboardType(.decimalPad) } } }
进阶本地化控制
如果需要指定特定地区的格式(比如中文的千分位、小数点),可以给format添加locale参数,两边保持一致即可:
// 示例:指定中文本地化格式 let chineseLocale = Locale(identifier: "zh_CN") Text(value ?? 0, format: .number.precision(.fractionLength(2)).locale(chineseLocale)) TextField("0.0", value: $value, format: .number.precision(.fractionLength(2)).locale(chineseLocale))
内容的提问来源于stack exchange,提问作者miltenkot
相关产品推荐
相关产品推荐

