是否可以使用樣式將 SwiftUI 按鈕中的標簽文本轉換為大寫?
struct UppercaseButtonStyle: ButtonStyle {
func makeBody(configuration: Configuration) -> some View {
configuration.label
.makeUppercase() // ?
}
}
uj5u.com熱心網友回復:
struct UppercaseButtonStyle: ButtonStyle {
func makeBody(configuration: Configuration) -> some View {
configuration.label
.textCase(.uppercase) // <- here
}
}
用法:
struct ContentView: View {
var body: some View {
Button("test", action: {})
.buttonStyle(UppercaseButtonStyle()) // <= here
}
}
uj5u.com熱心網友回復:
textCase
修飾符將直接作用于您的按鈕,例如:
Button("test", action: {})
.textCase(.uppercase)
但是,如果您想將其包裝在樣式中,最好使用 a PrimitiveButtonStyle
,因為它帶有一個Configuration
可以傳遞給Button
初始化程式的物件。
struct UppercaseButtonStyle: PrimitiveButtonStyle {
func makeBody(configuration: Configuration) -> some View {
Button(configuration)
.textCase(.uppercase)
}
}
// bonus points - add a shorthand description to match built-in styles
extension PrimitiveButtonStyle where Self == UppercaseButtonStyle {
static var uppercase = UppercaseButtonStyle()
}
// usage
Button("Test") { }
.buttonStyle(.uppercase)
這意味著您無需擔心按鈕上的任何其他型別的配置,并且您的樣式應該能夠與其他樣式很好地配合,例如:
Button("Test", role: .destructive) { }
.buttonStyle(.borderedProminent)
.buttonStyle(.uppercase)
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/529556.html
標籤:IOS迅速按钮迅捷
上一篇:SwiftUI的新NavigationStack不會導航到下一個螢屏
下一篇:如何使用swift找出最小的負數