我是编程新手,今天加入了 StackOverflow。我希望我可以根据指南询问:
我正在启动 SwiftUI,它似乎有许多代码仅适用于 iOS 17,请看一下:
if #available(iOS 17.0, *) {
Text("Hello World")
.font(.title.bold())
.multilineTextAlignment(.leading)
// This modifier only works on iOS 17
.foregroundStyle(.red)
} else {
Text("Hello World")
.font(.title.bold())
.multilineTextAlignment(.leading)
.foregroundColor(.red)
}
Run Code Online (Sandbox Code Playgroud)
我学到的第一件事就是不要重复相同的代码,但是如何在不重复代码的情况下轻松应用不同的修饰符?像这样的东西:
Text("Hello World")
.font(.title.bold())
.multilineTextAlignment(.leading)
if #available(iOS 17.0, *) {
.foregroundStyle(.red)
} else {
.foregroundColor(.red)
}
Run Code Online (Sandbox Code Playgroud)
PS:我见过这样的帖子来实现一个以 bool 作为输入的自定义修饰符,但它不能以编译器可以理解的方式获取操作系统版本,例如#available(iOS 17.0, *).
我知道我们可以实现类似的操作系统检查,如下所示,但我正在以相同的通用方式寻找版本检查:
Text("Hello World")
.font(.title.bold())
.multilineTextAlignment(.leading)
#if os(iOS)
.foregroundStyle(.red)
#else
.foregroundColor(.red)
Run Code Online (Sandbox Code Playgroud)
感谢您考虑我的问题