将货币符号动态组合到 TextField 文本
Posted
技术标签:
【中文标题】将货币符号动态组合到 TextField 文本【英文标题】:Dynamically Combining Currency Symbol to TextField Text 【发布时间】:2020-09-25 03:20:50 【问题描述】:是否可以在通过 TextField 在单个文本行上显示之前将货币符号动态组合到某些文本?目前,我的货币符号位于 TextField 文本“输入金额 >”
上方的行上此代码产生错误:“无法分配给属性:'self' 是不可变的”和“类型 '()' 不能符合 'View';只有 struct/enum/class 类型可以符合协议。”
我想在表单中使用这样的东西。
struct ContentView: View
@State private var moneyS: String = ""
var curr: String = ""
var curSymb: Int = 2
var mxx: String = ""
var body: some View
Text("Blah Blah Blah")
switch curSymb
case 1:
curr = "$"
case 2:
curr = "€"
default:
curr = "£"
mxx = "Enter Amount > " + curr
TextField(mxx, text: $moneyS)
.keyboardType(.decimalPad)
【问题讨论】:
那么你想要它在占位符中还是在编辑值中? 【参考方案1】:是的,这当然是可能的。默认情况下,它使用VStack
-like 布局并垂直放置所有视图。我们可以使用HStack
(水平堆栈)来水平对齐您的文本视图。
这是更新版本:
struct ContentView: View
...
var curr: String
switch curSymb
case 1: return "$"
case 2: return "€"
default: return "£"
var body: some View
HStack(alignment: .firstTextBaseline) // note that we use firstTextBaseline in order to keep the text aligned even if you decided to have different font for every part of the text
Text("Blah Blah Blah")
TextField("Enter Amount > " + curr, text: $moneyS)
.keyboardType(.decimalPad)
另外,请注意,我还将 curr
计算移到了一个变量中,以便 body
代码保持较小。
【讨论】:
【参考方案2】:感谢您的帮助。我喜欢简洁紧凑的代码。
抱歉,我不清楚 blah blah blah line。 VStack 中包含其他文本行,但只有“Enter Amount >”和 HStack 中的货币符号。
【讨论】:
以上是关于将货币符号动态组合到 TextField 文本的主要内容,如果未能解决你的问题,请参考以下文章
如何将多行文本字段(动态、文本居中)垂直居中到另一个 MovieClip?
如何从表格视图的自定义单元格内的 TextField 获取值(标签)以发布到 te URL