SwiftUI 中的条件属性 [英] Conditional property in SwiftUI
问题描述
如何根据条件添加附加属性?
How can I add an additional property based on a condition?
在我下面的代码中,我得到了错误 无法分配类型some View"的值(Self.overlay(_:alignment:)"的结果)到类型some View"(Self.overlay(_:alignment:)"的结果).onTapGesture(count:perform:)')
With my code below I got the error Cannot assign value of type 'some View' (result of 'Self.overlay(_:alignment:)') to type 'some View' (result of 'Self.onTapGesture(count:perform:)')
import SwiftUI
struct ConditionalProperty: View {
@State var overlay: Bool
var body: some View {
var view = Image(systemName: "photo")
.resizable()
.onTapGesture(count: 2, perform: self.tap)
if self.overlay {
view = view.overlay(Circle().foregroundColor(Color.red))
}
return view
}
func tap() {
// ...
}
}
推荐答案
感谢 这篇文章 我找到了一个界面非常简单的选项:
Thanks to this post I found an option with a very simple interface:
Text("Hello")
.if(shouldBeRed) { $0.foregroundColor(.red) }
由此扩展启用:
extension View {
@ViewBuilder
func `if`<Transform: View>(_ condition: Bool, transform: (Self) -> Transform) -> some View {
if condition { transform(self) }
else { self }
}
}
这是一篇很棒的博客文章,其中包含有关条件修饰符的其他提示:https://fivestars.blog/swiftui/conditional-modifiers.html
Here is a great blog post with additional tips for conditional modifiers: https://fivestars.blog/swiftui/conditional-modifiers.html
这篇关于SwiftUI 中的条件属性的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!