在 SwiftUI 中,我有以下内容:
func segments() -> [String] {
var toReturn = Calendar.current.veryShortWeekdaySymbols
toReturn.append("T")
return toReturn
}
Picker("Day of week?", selection: $selectedDay) {
ForEach(segments(), id: \.self) {
Text($0)
.scaledToFit()
}
}
.pickerStyle(.segmented)
.fixedSize()
显示为:
但是,如果我将改为toReturn.append("T")
更长的字符串,例如toReturn.append("Tasks")
,那么段的宽度就会变得与最宽的段一样宽,并且实际上并不适合其内容:
如何使 SwiftUI Picker 的段实际上与其内容一样宽而不是与最宽的段一样宽?
SwiftUI 目前不支持此功能,因此您必须转到 UIKit 并设置
UISegmentedControl.apportionsSegmentWidthsByContent
为 true。如果你不希望任何分段选择器具有相同的宽度,只需使用
UIAppearance
API,否则,你可以编写自己的
UIViewRepresentable
。以下是示例:用法: