SwiftUI 中的条件属性 [英] Conditional property in SwiftUI

查看:32
本文介绍了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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆