- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我试图找出这两种方法之间的实际区别。例如:
struct PrimaryLabel: ViewModifier {
func body(content: Content) -> some View {
content
.padding()
.background(Color.black)
.foregroundColor(Color.white)
.font(.largeTitle)
.cornerRadius(10)
}
}
extension View {
func makePrimaryLabel() -> some View {
self
.padding()
.background(Color.black)
.foregroundColor(Color.white)
.font(.largeTitle)
.cornerRadius(10)
}
}
Text(tech.title)
.modifier(PrimaryLabel())
Text(tech.title)
.makePrimaryLabel()
ModifiedContent(
content: Text(tech.title),
modifier: PrimaryLabel()
)
最佳答案
你提到的所有方法都是正确的。不同之处在于您如何使用它以及在哪里访问它。 哪一个更好? 是一个基于意见的问题,您应该查看干净的代码策略和 SOLID 原则等,以找到每种情况的最佳实践。
自 SwiftUI
是非常修饰链的基础,第二个选项是最接近原始修饰符的。你也可以像原件一样采用参数:
extension Text {
enum Kind {
case primary
case secondary
}
func style(_ kind: Kind) -> some View {
switch kind {
case .primary:
return self
.padding()
.background(Color.black)
.foregroundColor(Color.white)
.font(.largeTitle)
.cornerRadius(10)
case .secondary:
return self
.padding()
.background(Color.blue)
.foregroundColor(Color.red)
.font(.largeTitle)
.cornerRadius(20)
}
}
}
struct ContentView: View {
@State var kind = Text.Kind.primary
var body: some View {
VStack {
Text("Primary")
.style(kind)
Button(action: {
self.kind = .secondary
}) {
Text("Change me to secondary")
}
}
}
}
关于ios - 在 SwiftUI 中创建 ViewModifier 和 View 扩展的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57411656/
我的一个 View 中有这段代码: struct TextFieldClearButton: ViewModifier { @Binding var text: String func
我的一个 View 中有这段代码: struct TextFieldClearButton: ViewModifier { @Binding var text: String func
我收到一个错误“Type 'PlayButtonModifier' does not conform to protocol 'ViewModifier'”,我不明白为什么以及 - 更重要的是 - 如
我创建了一个 ViewModifier,它在其内容的右侧添加了一个图标,我希望图标显示的方式是将 .clipShape() 修饰符从 -50 设置为 0,问题是第一次出现时,它只是弹出而没有动画,最后
我正在创建一个自定义 TextField由多个装饰 View 组成的 View 。我希望能够设置内部TextField使用仅适用于该 subview 的 View 修饰符,例如键盘、大写等。 我认为最
以下代码工作正常。所以真的,我很好......但我想了解 ViewModifiers......所以我的目标是将不变的东西与动态的东西分开来创建一个 .cardify() 自定义修饰符以调用形状 Vi
有没有办法创建修改器来更新 @State private var在 View 被修改? 我有一个自定义 View ,它返回 Text带有“动态”背景颜色或 Circle具有“动态”前景色。 struc
我为 UITextField 创建了一个 UIViewRespresentable。我想应用修饰符: myTextField.font(.headline).keyboardType(keyboard
这更像是一个句法问题。我试图在不使用 AnyView 的情况下将 View 传递到 ViewModifier 初始化程序。 目前我有一些使用 AnyView 运行的东西,但我想使用通用 View 语法
这更像是一个句法问题。我试图在不使用 AnyView 的情况下将 View 传递到 ViewModifier 初始化程序。 目前我有一些使用 AnyView 运行的东西,但我想使用通用 View 语法
我有一个 ImageView ,基于一个 bool 值,我应该使用色调,如果条件为真,我应该使用色调,否则我应该使用原始图像,我尝试了多种方式使用 ViewModifier,但我找不到解决方案。是否有
我有一个自定义 ViewModifier它只是返回带有 onReceive 的相同内容修饰符,onReceive没有触发,这里有一个示例代码,您可以在XCode中复制、粘贴和运行: import Sw
我想添加一个 ViewModifier,如 Paul Hudson (https://www.hackingwithswift.com/books/ios-swiftui/custom-modifie
我试图找出这两种方法之间的实际区别。例如: struct PrimaryLabel: ViewModifier { func body(content: Content) -> some Vi
我试图找出这两种方法之间的实际区别。例如: struct PrimaryLabel: ViewModifier { func body(content: Content) -> some Vi
我在 iOS 14 上使用 SwiftlySearch,在 iOS 15 上使用 .searchable。 struct CompatibleSearchBarModifier: ViewModifi
为什么shadow()可以申请2次以上,每次更新,而对于.font()即使我提出了不同的样式参数和 .font()两次并且没有更新保持不变? struct LabelStyle: ViewModifi
我是一名优秀的程序员,十分优秀!