在 TabView 中设置 SwiftUI PageTabViewStyle 垂直流向

Posted

技术标签:

【中文标题】在 TabView 中设置 SwiftUI PageTabViewStyle 垂直流向【英文标题】:Set SwiftUI PageTabViewStyle vertical flow direction in TabView 【发布时间】:2020-06-23 11:31:00 【问题描述】:

现在可以使用修饰符创建水平滚动页面控制器:

.tabViewStyle(PageTabViewStyle())

默认情况下,页面是水平显示的。怎么修改成和UIPageViewController一样的垂直滚动方式?

【问题讨论】:

在询问“如何”之前,您会检查“是否”它是否存在。我在 Xcode 12 SwiftUI 中没有看到类似的东西。 【参考方案1】:

这是你需要的吗

.tabViewStyle(PageTabViewStyle())
.rotationEffect(.degrees(90))

【讨论】:

【参考方案2】:

受 Ernist 回答的启发,我找到了一种有效的方法。

GeometryReader  proxy in
    TabView(selection: selection) 
        everyView
            .frame(width: proxy.size.width, height: proxy.size.height)
            .rotationEffect(.degrees(-90))
            .rotation3DEffect(flippingAngle, axis: (x: 1, y: 0, z: 0))
    
    .frame(width: proxy.size.height, height: proxy.size.width)
    .rotation3DEffect(flippingAngle, axis: (x: 1, y: 0, z: 0))
    .rotationEffect(.degrees(90), anchor: .topLeading)
    .offset(x: proxy.size.width)
.tabViewStyle(PageTabViewStyle())

我还构建了一个swift package (VerticalTabView ?),它可以将所有代码包装在此:

VTabView 
    everyView
.tabViewStyle(PageTabViewStyle())

【讨论】:

以上是关于在 TabView 中设置 SwiftUI PageTabViewStyle 垂直流向的主要内容,如果未能解决你的问题,请参考以下文章

如何在 SwiftUI 中设置 addObserver?

在 SwiftUI 中设置切换颜色

在 SwiftUI 中设置切换颜色

使用 SwiftUI 在 macOS 中设置 SidebarView 的宽度

在 SwiftUI 中设置 TextField 的宽度

在 SwiftUI 的导航栏中设置图像和标题