ViewCondition

View 协议的一个扩展,提供了条件视图修饰符。

概述

ViewCondition 增强了 SwiftUI 的条件渲染能力,使开发者更容易创建自适应和响应式的用户界面。 使用 ViewCondition,您可以轻松地应用修饰符、控制可见性或隐藏视图,这些操作基于各种条件,例如布尔逻辑、操作系统或模块可用性。 这种灵活性允许您为不同的平台和用户需求定制应用程序的界面,而无需复杂的条件语句。

文档

您可以在这里找到文档: https://kevinhermawan.github.io/ViewCondition/documentation/viewcondition

安装

您可以使用 Swift Package Manager 将 ViewCondition 作为依赖项添加到您的项目,方法是将其添加到您的 Package.swift 的 dependencies 值中。

dependencies: [
    .package(url: "https://github.com/kevinhermawan/ViewCondition.git", .upToNextMajor(from: "2.0.0"))
]

或者,在 Xcode 中

  1. 在 Xcode 中打开您的项目。
  2. 点击 File -> Swift Packages -> Add Package Dependency...
  3. 输入仓库 URL:https://github.com/kevinhermawan/ViewCondition.git
  4. 选择您要添加的版本。 您可能想要添加最新版本。
  5. 点击 Add Package

用法

If 修饰符

if 修饰符允许您有条件地将修改应用于视图。

基本布尔条件

Text("Hello, World!")
    .if(someCondition) { view in
        view.foregroundColor(.red)
    }

操作系统特定

Text("Hello, World!")
    .if(os: .iOS) { view in
        view.padding()
    }

模块可用性

Text("Hello, World!")
    .if(canImport: .uiKit) { view in
        view.foregroundColor(.blue)
    }

多个布尔条件

Text("Hello, World!")
    .if([condition1, condition2, condition3]) { view in
        view.bold()
    }

多个操作系统

Text("Hello, World!")
    .if(os: [.iOS, .macOS]) { view in
        view.font(.largeTitle)
    }

多个模块可用性

Text("Hello, World!")
    .if(canImport: [.uiKit, .appKit]) { view in
        view.italic()
    }

Visible 修饰符

visible 修饰符控制视图的可见性。

基本布尔条件

Text("I'm visible!")
    .visible(if: someCondition)

带有移除选项

Text("I might be removed")
    .visible(if: someCondition, removeCompletely: true)

操作系统特定

Text("iOS Only")
    .visible(on: .iOS)

模块可用性

Text("UIKit Available")
    .visible(ifCanImport: .uiKit)

多个布尔条件

Text("All conditions must be true")
    .visible(if: [condition1, condition2, condition3])

多个操作系统

Text("iOS or macOS")
    .visible(on: [.iOS, .macOS])

多个模块可用性

Text("UIKit or AppKit")
    .visible(ifCanImport: [.uiKit, .appKit])

Hide 修饰符

hide 修饰符控制视图的隐藏。

基本布尔条件

Text("I'm hidden!")
    .hide(if: someCondition)

带有移除选项

Text("I might be removed")
    .hide(if: someCondition, removeCompletely: true)

操作系统特定

Text("Hidden on iOS")
    .hide(on: .iOS)

模块可用性

Text("Hidden if UIKit is available")
    .hide(ifCanImport: .uiKit)

多个布尔条件

Text("Hidden if all conditions are true")
    .hide(if: [condition1, condition2, condition3])

多个操作系统

Text("Hidden on iOS or macOS")
    .hide(on: [.iOS, .macOS])

多个模块可用性

Text("Hidden if UIKit or AppKit is available")
    .hide(ifCanImport: [.uiKit, .appKit])

许可

MIT 许可证