如何将SwiftUI中重复使用的长自定义修饰符简化为单词引用?
简化重复的SwiftUI字体渐变修饰符
你可以通过自定义ViewModifier并扩展View添加便捷方法的方式,把这段重复代码封装成单个方法调用:
1. 定义自定义修饰符
创建一个遵循ViewModifier协议的结构体,把你需要的字体和渐变逻辑封装进去:
struct CustomGradientTextModifier: ViewModifier { func body(content: Content) -> some View { content .font(.custom("Bebas Neue", size: 24)) .foregroundStyle(LinearGradient( gradient: Gradient(colors: [Color("lb"), Color("rb")]), startPoint: .top, endPoint: .bottom )) } }
2. 给View添加便捷调用方法
通过扩展View,给所有视图添加一个简短的调用方法:
extension View { func customGradientText() -> some View { self.modifier(CustomGradientTextModifier()) } }
3. 使用方式
现在你只需要在任意视图上调用这个单方法名即可,替代原来的冗长代码:
Text("Hello World") .customGradientText()
进阶:支持动态调整字号
如果需要根据场景调整字号,可以给修饰器添加参数,同时设置默认值保持原有逻辑:
struct CustomGradientTextModifier: ViewModifier { var fontSize: CGFloat func body(content: Content) -> some View { content .font(.custom("Bebas Neue", size: fontSize)) .foregroundStyle(LinearGradient( gradient: Gradient(colors: [Color("lb"), Color("rb")]), startPoint: .top, endPoint: .bottom )) } } extension View { func customGradientText(fontSize: CGFloat = 24) -> some View { self.modifier(CustomGradientTextModifier(fontSize: fontSize)) } }
调用时可灵活指定字号:
// 使用默认24号字 Text("默认样式") .customGradientText() // 自定义32号字 Text("大号样式") .customGradientText(fontSize: 32)
内容的提问来源于stack exchange,提问作者Pro Girl
相关产品推荐
相关产品推荐

