我有一个SwiftUI应用程序,我想保持对iOS 13的支持,但在iOS 14上,我想使用新的LazyVStack和LazyHStack。我认为typealias会非常适合这个功能,但是不确定如何正确地设置这个别名以便在iOS 13上使用,而不是在14上使用。我试过了,但我相信这会使别名在iOS 13和更高版本上可用,所以在iOS 14上也会包括它。
有没有办法将可用性设置为仅iOS 13?或者有更好的方法来做这件事?
@available(iOS 13.0, *)
typealias LazyVStack = VStack发布于 2020-08-03 00:25:52
下面是可以用作常规堆栈容器的包装器
struct CompatibleVStack<Content> : View where Content : View {
let alignment: HorizontalAlignment
let spacing: CGFloat?
let content: () -> Content
init(alignment: HorizontalAlignment = .center, spacing: CGFloat? = nil,
@ViewBuilder content: @escaping () -> Content) {
self.alignment = alignment
self.spacing = spacing
self.content = content
}
var body: some View {
Group {
if #available(iOS 14, *) { // << add more platforms if needed
LazyVStack(alignment: alignment, spacing: spacing, pinnedViews: [], content:content)
} else {
VStack(alignment: alignment, spacing: spacing, content:content)
}
}
}
}https://stackoverflow.com/questions/63218071
复制相似问题