如何将 NavigationView 从具有固定尺寸的 TabView 扩展到全屏?

Posted

技术标签:

【中文标题】如何将 NavigationView 从具有固定尺寸的 TabView 扩展到全屏?【英文标题】:How to expand a NavigationView to full screen from a TabView with fixed dimensions? 【发布时间】:2021-12-09 20:19:03 【问题描述】:

我有一个VStack,它结合了两个视图。一个是常规的Rectangle,另一个是在其他矩形中旋转的TabView。其中一个矩形就像NavigationView 中的一个按钮,它向用户呈现日历。

在我当前的代码中,日历的大小与TabView 相同,但我希望日历扩展到全屏(移除绿色矩形并转到完全不同的视图)。怎样才能做到这一点?

当前代码

import SwiftUI

struct ContentView: View 

    var body: some View 
        VStack 
            Rectangle()
                .cornerRadius(15)
                .foregroundColor(Color.green)
                .frame(width: .infinity, height: 250)
            TabView 
                Rectangle()
                    .cornerRadius(15)
                    .foregroundColor(Color.blue)
                    .frame(width: .infinity, height: 300)
                Rectangle()
                    .cornerRadius(15)
                    .foregroundColor(Color.black)
                    .frame(width: .infinity, height: 300)
                NavigationView 
                    NavigationLink(destination: CalendarView()) 
                        Text("Tap for calendar.")
                    
                
            
            .tabViewStyle(PageTabViewStyle(indexDisplayMode: .always))
            .indexViewStyle(.page(backgroundDisplayMode: PageIndexViewStyle.BackgroundDisplayMode.always))
        
    


struct ContentView_Previews: PreviewProvider 
    static var previews: some View 
        ContentView()
    

它看起来像什么

【问题讨论】:

【参考方案1】:

原来你只需要将整个东西包裹在 NavigationView...

mport SwiftUI

struct ContentView: View 

    var body: some View 
        NavigationView 
        VStack 
            Rectangle()
                .cornerRadius(15)
                .foregroundColor(Color.green)
                .frame(width: .infinity, height: 250)
            TabView 
                Rectangle()
                    .cornerRadius(15)
                    .foregroundColor(Color.blue)
                    .frame(width: .infinity, height: 300)
                Rectangle()
                    .cornerRadius(15)
                    .foregroundColor(Color.black)
                    .frame(width: .infinity, height: 300)
                NavigationView 
                    NavigationLink(destination: CalendarView()) 
                        Text("Tap for calendar.")
                    
                
            
            .tabViewStyle(PageTabViewStyle(indexDisplayMode: .always))
            .indexViewStyle(.page(backgroundDisplayMode: PageIndexViewStyle.BackgroundDisplayMode.always))
        
    
    


struct ContentView_Previews: PreviewProvider 
    static var previews: some View 
        ContentView()
    

【讨论】:

以上是关于如何将 NavigationView 从具有固定尺寸的 TabView 扩展到全屏?的主要内容,如果未能解决你的问题,请参考以下文章

NavigationView 奇怪的与子视图之间的转换

尺取法简介

如何从右到左设计android.support.design.widget.NavigationView?

如何从 SwiftUI 中的 NavigationView 中删除搜索栏?

如何处理NavigationView PaneFooter设置项单击

如何将 BottomNavigationView 与 NavigationView 一起对齐到 Activity 的底部?