gpt4 book ai didi

ios - 在 SwiftUI 中,我们如何重用一组修饰符或将它们变成一种组件来不重复调用它们?

转载 作者:行者123 更新时间:2023-12-01 15:33:00 27 4
gpt4 key购买 nike

我知道很多人已经考虑过这个问题,但是我在 Stackoverflow 上找不到任何好的答案,或者即使在 Youtube 的一些著名 channel 上也找不到纯粹谈论这个的好的教程。
我的问题很简单:
在 SwiftUI 中,我们可能会做很多这样的事情:

Text("Hello World")
.padding(EdgeInsets(top: 3, leading: 3, bottom: 3, trailing: 3))
.background(Color.blue)
.cornerRadius(5)
但是,正如您或任何其他非常有经验和专业的开发人员可能知道的那样,我们绝对不想写 .padding(EdgeInsets(top: 3, leading: 3, bottom: 3, trailing: 3)).background(Color.blue).cornerRadius(5)对于每个“Text(...)”或其他类似“Button”或任何其他 SwiftUI 组件。我们确实想包装 .padding(EdgeInsets(top: 3, leading: 3, bottom: 3, trailing: 3)).background(Color.blue).cornerRadius(5)在某种方法或其他地方。我知道如何在 UIKit 中做到这一点,但问题是我们如何做到这一点,因为 SwiftUI 是一种构建 GUI 的声明性方式?
谢谢。

最佳答案

以下是自定义 ViewModifier 通常的做法, plus 描述了如何通过参数配置它的示例:

struct MyTextModifier: ViewModifier {
let corner: CGFloat
func body(content: Content) -> some View {
content
.padding(EdgeInsets(top: 3, leading: 3, bottom: 3, trailing: 3))
.background(Color.blue)
.cornerRadius(corner)
}
}

extension View {
func configured(with radius: CGFloat = 5) -> some View {
self.modifier(MyTextModifier(corner: radius))
}
}

struct MyTextModifier_Previews: PreviewProvider {
static var previews: some View {
Text("Hello World")
.configured()
}
}

使用 Xcode 11.2、iOS 13.2 测试

关于ios - 在 SwiftUI 中,我们如何重用一组修饰符或将它们变成一种组件来不重复调用它们?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59332535/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com