首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >iOS 13的typealias LazyVStack

iOS 13的typealias LazyVStack
EN

Stack Overflow用户
提问于 2020-08-02 23:52:45
回答 1查看 1K关注 0票数 2

我有一个SwiftUI应用程序,我想保持对iOS 13的支持,但在iOS 14上,我想使用新的LazyVStackLazyHStack。我认为typealias会非常适合这个功能,但是不确定如何正确地设置这个别名以便在iOS 13上使用,而不是在14上使用。我试过了,但我相信这会使别名在iOS 13和更高版本上可用,所以在iOS 14上也会包括它。

有没有办法将可用性设置为仅iOS 13?或者有更好的方法来做这件事?

代码语言:javascript
复制
@available(iOS 13.0, *)
typealias LazyVStack = VStack
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-08-03 00:25:52

下面是可以用作常规堆栈容器的包装器

代码语言:javascript
复制
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)
        }
      }
    }
}
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63218071

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档