我正在学习 SwiftUI。面对Picker
里面Form
。看起来超级方便,但是右边的勾号图标不太合我的意。我没有找到任何改变外观的选项,并决定自己制作。但是,我遇到了奇怪的行为Spacer()
。
示例: 这里,Picker A是一个标准的 Picker,基本代码:
Picker("Picker A", selection: $selectedCurrency) {
ForEach(currencies) { currency in
Text(currency.title)
.lineLimit(1)
.tag(currency.id)
}
}
.pickerStyle(DefaultPickerStyle())
选择器 B - 自定义(我的):
NavigationLink(
destination: CurrencyListView(currency: $currency),
label: {
Text("Picker B")
Spacer()
if currency != nil {
Text(currency!.title)
.lineLimit(1)
.foregroundColor(.gray)
}
}
)
问题是截断选定的值。如果所选值完全适合单元格(不干扰左侧部分),那么完全显示它似乎是合乎逻辑的(如在默认选择器中)。问题在.fixedSize(horizontal: true, vertical: true)
两者的帮助下得以解决Text
。但是,如果您这样做,那么如果选择了具有长名称的内容,则 V 形箭头会将单元格移至右侧。而苹果则考虑过这样一个案例,并以自己的方式解决了它:
我尝试使用.layoutPriority()
,但它没有用。我试图在显示Text
之前确定右侧的宽度Spacer
以计算其宽度。但我也没有找到好的解决方案。定义字符数的变体是拐杖有人知道如何解决这样的问题吗?谢谢