No SwiftUI, tenho o seguinte:
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()
Isso é mostrado como:
Entretanto, se eu alterar o toReturn.append("T")
para uma string mais longa, como toReturn.append("Tasks")
, os segmentos se tornarão tão largos quanto o segmento mais largo e não se ajustarão ao seu conteúdo:
Como fazer com que os segmentos do SwiftUI Picker sejam tão largos quanto seu conteúdo e não tão largos quanto o segmento mais largo?
O SwiftUI não oferece suporte para isso no momento, então você terá que ir até o UIKit e definir
UISegmentedControl.apportionsSegmentWidthsByContent
como verdadeiro.Se você não quiser que nenhum seletor segmentado tenha larguras iguais, basta usar as
UIAppearance
APIs,Caso contrário, você pode escrever o seu próprio
UIViewRepresentable
. Aqui está um exemplo:Uso: