相关疑难解决方法(0)

添加 TabView 使 Navigation Bar 无法覆盖 SwiftUI 中的安全区域

在我的 SwiftUI iOS 应用程序中添加 TabView 时,导航栏停止覆盖缺口

我尝试为 TabView 实现创建另一个文件(修改 SceneDeletage 等)

这是一个没有 TabView 的简单代码,它使导航栏覆盖安全区域(又名缺口)

import SwiftUI

struct ContentView: View {
    var body: some View {

        NavigationView{
            ScrollView{
                HStack{
                    VStack{
                        ForEach((1...10), id: \.self){_ in
                            Text("Hello")
                            .padding(.leading, 20)
                        }
                    }
                    Spacer()
                    //.padding(.leading, 20)
                }
            }
        .navigationBarTitle("Title Covers Safe Area")
        }

    }
}
struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}
Run Code Online (Sandbox Code Playgroud)

这是一个带有 TabView 的代码,它使导航栏不会覆盖安全区域

import SwiftUI

struct ContentView: View {
    var body: some View {

        TabView {
            NavigationView{ …
Run Code Online (Sandbox Code Playgroud)

xcode ios swift swiftui

6
推荐指数
1
解决办法
3468
查看次数

为什么 SwiftUI 的 TabView 旋转到横向会跳转到随机选项卡编号?

使用 Swift 5.3.2、Xcode 12.4、iOS 14.4、

我正在尝试在 SwiftUI 中制作一个简单的 Page-TabView (参见下面的代码摘录)。

当旋转到横向或返回纵向时,出现问题(参见视频):

每当我旋转 iPhone 时,TabView 都会“跳转”到随机选项卡编号。

为什么是这样 ?

我该怎么做才能使 TabView 在旋转时保持当前选项卡号?

(我使用的是iPhoneX)

新的 iOS14 TabView 的 PageControl 功能似乎存在更多问题,如此处所述。(也许旋转设备时的“随机选项卡编号”与所描述的布局问题有关)

在此输入图像描述

import SwiftUI

@main
struct MyApp: App {
    
    var body: some Scene {
        WindowGroup {
            TabView {
                Text("1")
                    .frame(maxWidth: .infinity, maxHeight: .infinity)
                    .background(Color.pink)
                Text("2")
                    .frame(maxWidth: .infinity, maxHeight: .infinity)
                    .background(Color.yellow)
                Text("3")
                    .frame(maxWidth: .infinity, maxHeight: .infinity)
                    .background(Color.green)
                Text("4")
                    .frame(maxWidth: .infinity, maxHeight: .infinity)
                    .background(Color.blue)
            }
            .tabViewStyle(PageTabViewStyle())
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

landscape tabview swift

6
推荐指数
1
解决办法
1169
查看次数

在SwiftUI中使用TabView时NavigationView无法正确显示

大家好。我正在开发一个显示一些鸣叫的简单SwiftUI应用程序。它具有一个带两个视图的选项卡视图:将显示推文的主页和一个辅助视图。

问题在于主页上有一个NavigationView。如果我选择仅显示主页,则一切似乎都正确,但是当我从显示TabView并向下滚动时,NavigationView感觉有点奇怪。

由于我不擅长解释,因此这里有一些图片:

应该是这样 应该是这样

但是就是这样 但是就是这样

我想添加.edgesIgnoringSafeArea(.top),但是NavigationView现在被该缺口隐藏了,并且没有效果。

有什么办法可以使NavigationView像第一个图像一样显示?

任何帮助表示赞赏。提前致谢。

我的密码

HomePageView

struct HomePageView: View {

    var body: some View {
        NavigationView {
            List {
                //tweet code
            }
            .navigationBarTitle("Your feed")
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

TabView

struct TabController: View {
    @State private var selection = 0

    var body: some View {
        TabView(selection: $selection){
            HomePageView()
                .tabItem {
                    VStack {
                        Image(systemName: "house.fill")
                            .font(.title)
                    }
                }
                .tag(0)
            Text("Second View")
                .font(.title)
                .tabItem {
                    VStack {
                        Image(systemName: "bell.fill")
                            .font(.title)
                    }
                } …
Run Code Online (Sandbox Code Playgroud)

tabview swift swiftui ios-navigationview

5
推荐指数
1
解决办法
481
查看次数

如何在 SwiftUI 中使用带有 NavigationView 的 TabView?

我遇到了与发布此问题的人完全相同的问题:

在 SwiftUI 中使用 TabView 时,NavigationView 无法正确显示

我做错了什么还是只是一个将被修复的 SwiftUI 错误?

tabview swift swift5 swiftui ios-navigationview

0
推荐指数
1
解决办法
2615
查看次数

在我的 NavigationView '.edgesIgnoringSafeArea' 中,内容不会移动到安全区域之外

我希望 .edgesIgnoringSafeArea(.all) 将内容适合到画布的顶部

我希望它显示如下: https: //i.stack.imgur.com/RzrO6.png

相反,它显示如下: https: //i.stack.imgur.com/sbbaU.png

内容查看:

TabView {
    NavigationView {
        MainContentView()
    }
...
}
Run Code Online (Sandbox Code Playgroud)

主要内容查看:

var body: some View {
        VStack(alignment: .leading, spacing: 20) {
            ...
        }
        .padding([.horizontal, .top])
        .navigationBarTitle("Title")
    }
Run Code Online (Sandbox Code Playgroud)

详细查看:

struct PostDetail: View {    
    var post: Post

    var body: some View {
        List {
            Image(post.imageName)
            .resizable()
            .aspectRatio(contentMode: .fit)
            .listRowInsets(EdgeInsets())
            VStack(spacing: 20) {
                Text(post.name)
                    .foregroundColor(.primary)
                    .font(.largeTitle)
                    .fontWeight(.bold)
                Text(post.description)
                    .foregroundColor(.primary)
                    .font(.body)
                    .lineLimit(nil)
                    .lineSpacing(12)
                VStack {
                    HStack {
                        Spacer()
                        ViewMoreButton(post: post)
                        Spacer()
                    }
                }
            }
            .padding(.top)
            .padding(.bottom) …
Run Code Online (Sandbox Code Playgroud)

swiftui

0
推荐指数
1
解决办法
1343
查看次数

标签 统计

swift ×4

swiftui ×4

tabview ×3

ios-navigationview ×2

ios ×1

landscape ×1

swift5 ×1

xcode ×1