In SwiftUI you can set font tracking (spacing between letters) on a Text
View
using the tracking
View modifier:
Text("Hello, World!")
.tracking(10)
If you have a Button
and apply your custom ButtonStyle
you can do all kinds of modifications to the style of the button, but since the configuration.label
is not an instance of Text
but rather ButtonStyleConfiguration.Label
, I don't have direct access to apply tracking
. Is there a way to do this without having to set it on the Button
's label
View
directly? It seems like something you ought to be able to do since it's a style-related thing but I don't see how to accomplish it.
public struct MyStyle: ButtonStyle {
public func makeBody(configuration: Configuration) -> some View {
configuration.label
// (if I tried to put `.tracking` here it wouldn't work because it isn't Text)
.foregroundColor(Color.red)
.clipShape(Capsule())
// … etc.
}
}
ViewModifier to change both font and tracking looks ~ related but no relevant answer.