swiftui - ButtonStyle 字体跟踪或投射配置标签?
问题描述
我想在我ButtonStyle
使用带有 a 的简单 Button 构造函数时设置文本/标签字体属性StringProtocol
,而不是传入完整视图,但makeBody
函数中的配置标签不允许这样做。我明白了为什么 -makeBody
返回some View
没有我想使用的tracking
and修饰符。textCase
有没有办法将配置标签转换为Text
视图,或者以某种方式让我将额外的字体修饰符(跟踪和 textCase)直接放入我的视图中,ButtonStyle
这样我就不必传递Text
带有额外修饰符的视图?
// The Text properties I'd like to modify which are not available
// on the configuration label, so I've added them to this Text extension
extension Text {
func buttonText() -> some View {
self.tracking(2.0).textCase(.uppercase)
}
}
// What I would like...
Button("Some Text") {
// Some action
}
.buttonStyle(BrandedButton())
// What I currently have to do
Button(action: {}, label: {
Text("Some Text")
.buttonText()
})
.buttonStyle(BrandedButton())
BrandedButton
是我的ButtonStyle
。我明显担心的是这种重复 - 必须在.buttonText()
任何地方添加修饰符 - 很容易被忽视,并可能导致按钮样式不匹配。.font
是 的有效修饰符configuration.label
,但其他不是。
解决方案
推荐阅读
- soap - 将 ClientCredentials 替换为 OperationContextScope SOAP 中的令牌承载标头
- flutter - 如何在 Flutter 的页面视图中添加底部填充
- java - 为什么java在小数组中使用快速排序算法而不是合并排序?
- python - 我如何知道我的公钥和 RSA 算法中的私钥是什么?
- c - 如何读取将二进制文件中的元素放入其中的数组?
- python - 使用 Jenkins 同时执行 2 个 python 脚本
- sql-server - 在同一个表TSQL中创建重复行
- sql - 更新查询中的错误 3073 一直在工作
- javascript - 防止输入字段将点转换为逗号
- jquery - 更新线程函数中的隐藏字段值,并从客户端 JQuery 中获取隐藏字段值