标签: tabview

如何使用 SwiftUI 在 TabView 中禁用垂直滚动?

我在我的应用程序中设置了一个 TabView,这样我就可以在多个页面之间水平滑动,但我也有一个可能出现的不需要的垂直滚动,具有反弹效果。如何禁用此垂直滚动?

我的代码:


struct ContentView: View {
  @State private var currentTabIndex: Double = 0

  var body: some View {
    VStack {
      TabView(selection: $currentTabIndex) {
        Text("Text n°1")
          .tag(0)
        
        Text("Text n°2")
          .tag(1)
      }
      .border(Color.black)
      .tabViewStyle(PageTabViewStyle(indexDisplayMode: .never))
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

tabview swift swiftui

25
推荐指数
2
解决办法
3649
查看次数

当键盘出现在 SwiftUI 中时 OnAppear 意外调用

我在 SwiftUI 2.0 和 iOS14 中遇到了非常奇怪的行为。

当键盘出现在屏幕上时,会自动调用其他选项卡视图的 OnAppear 方法。

但是,这很好用 Xcode 11.7

这是行动中的问题。 TabView 中的 TextField

这是产生上述错误的代码。

struct ContentView: View {
    var body: some View {
        TabView {
            DemoView(screenName: "Home")
                .tabItem {
                    Image.init(systemName: "star.fill")
                    Text("Home")
                }
            DemoView(screenName: "Result")
                .tabItem {
                    Image.init(systemName: "star.fill")
                    Text("Result")
                }
            DemoView(screenName: "More")
                .tabItem {
                    Image.init(systemName: "star.fill")
                    Text("More")
                }
        }
    }
}

struct DemoView:View {
    
    @State var text:String = ""
    var screenName:String
    var body: some View {
        VStack{
            Text(screenName)
                .font(.title)
            
            TextField("Buggy Keyboard Issue", text: $text)
                .textFieldStyle(RoundedBorderTextFieldStyle())
                
            Text("Issue : When keyboard …
Run Code Online (Sandbox Code Playgroud)

keyboard textfield tabview swiftui swiftui-tabview

24
推荐指数
1
解决办法
1102
查看次数

SwiftUI TabView:如何检测选项卡上的点击?

我想在每次点击选项卡时运行一个函数。

在下面的代码中(通过使用onTapGesture),当我点击新选项卡时,myFunction会被调用,但选项卡视图不会更改。

struct DetailView: View {
    var model: MyModel
    @State var selectedTab = 1
    
    var body: some View {
        TabView(selection: $selectedTab) {
            Text("Graphs").tabItem{Text("Graphs")}
               .tag(1)
            Text("Days").tabItem{Text("Days")}
               .tag(2)
            Text("Summary").tabItem{Text("Summary")}
               .tag(3)
        }
        .onTapGesture {
            model.myFunction(item: selectedTab)
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我怎样才能得到这两件事:

  • tabview正常显示
  • 我的函数被调用

tabview swift swiftui swiftui-tabview swiftui-ontapgesture

16
推荐指数
2
解决办法
9194
查看次数

更改标签栏颜色(Swift)

我试图使用swift更改XCode中的视图控制器中的标签栏颜色.我有一个十六进制,我匹配RGB值,我试图在此代码中设置它.(哪个不起作用)

let color = UIColor(red: 41, green: 40, blue: 39, alpha: 1.0)
UITabBar.appearance().barTintColor = color
Run Code Online (Sandbox Code Playgroud)

但是这段代码确实:

UITabBar.appearance().barTintColor = UIColor.whiteColor()
Run Code Online (Sandbox Code Playgroud)

任何人都可以解释为什么这不起作用,我能做些什么来解决它?

tabview swift

15
推荐指数
2
解决办法
1万
查看次数

为什么在 SwiftUI 中的 TabView 中切换选项卡时,在 onDisappear 之后再次调用 onAppear?

如果有任何更改,我会在出现选项卡项时调用 API。为什么在调用 onDisappear 之后调用 onAppear?

这是一个简单的例子:

struct ContentView: View {
    var body: some View {
        TabView {
            NavigationView {
                Text("Home")
                    .navigationTitle("Home")
                    .onAppear {
                        print("Home appeared")
                    }
                    .onDisappear {
                        print("Home disappeared")
                    }
            }
            .tabItem {
                Image(systemName: "house")
                Text("Home")
            }.tag(0)
        
            NavigationView {
                Text("Account")
                    .navigationTitle("Account")
                    .onAppear {
                        print("Account appeared")
                    }
                    .onDisappear {
                        print("Account disappeared")
                    }
            }
            .tabItem {
                Image(systemName: "gear")
                Text("Account")
            }.tag(1)
        }
    }
}    
Run Code Online (Sandbox Code Playgroud)

只需运行上面的代码,我们将在 onDisappear 之后看到 onAppear。

Home appeared
---After switch tab to Account---
Home disappeared
Account appeared
Home appeared
Run Code Online (Sandbox Code Playgroud)

有没有办法避免这种情况?

ios tabview swiftui

13
推荐指数
2
解决办法
1335
查看次数

SwiftUI TabView 与基于 Content 的 PageTabViewStyle 动态高度

如何使 SwiftUI 的高度TabView调整PageTabViewStyle为内容的高度?

我有SwiftUI如下观点:

struct TabViewDynamicHeight: View {
    var body: some View {
        VStack {
            TabView {
                ForEach(0..<5, id: \.self) { index in
                    VStack {
                        Text("Text \(index)")
                        Text("Text \(index)")
                        Text("Text \(index)")
                    }
                }
            }
            .tabViewStyle(PageTabViewStyle())
            .background(Color.red)
            .fixedSize(horizontal: false, vertical: true)
        }
        .background(Color.blue)
    }
}
Run Code Online (Sandbox Code Playgroud)

这会产生如下输出:

在此输入图像描述

可以看到,内容被TabView截断了。我知道我可以删除.fixedSize,但视图看起来像这样:

在此输入图像描述

我希望 TabView 能够响应内容的高度。关于如何实现这一目标有什么想法吗?

ios tabview swift swiftui

13
推荐指数
1
解决办法
2715
查看次数

如何在 SwiftUIs TabView 中设置默认选项卡?

我有一个TabViewinSwiftUI并且希望在启动应用程序时将第二个选项卡设为默认选项卡。

我还没有找到任何文档来提供这种行为,但应该是可能的。大多数应用程序都将中间选项卡作为默认选项卡。

TabView {
    QuestionView()
        .tabItem {
            Image(systemName: "questionmark")
            Text("Questions")
        }
    DataView()
        .tabItem {
            Image(systemName: "chart.bar.fill")
            Text("Data")
        }
    Text("Empty Tab right now")
        .tabItem {
            Image(systemName: "bolt.horizontal.fill")
            Text("Trend")
        }
}
Run Code Online (Sandbox Code Playgroud)

tabview swift swiftui

12
推荐指数
2
解决办法
3082
查看次数

如何在 SwiftUI TabView 中保持滚动位置

使用ScrollView内部 aTabView我注意到当我在选项卡之间来回移动时 ScrollView 不会保持它的滚动位置。如何更改以下示例以使 ScrollView 保持其滚动位置?

import SwiftUI

struct HomeView: View {
    var body: some View {
        ScrollView {
            VStack {
                Text("Line 1")
                Text("Line 2")
                Text("Line 3")
                Text("Line 4")
                Text("Line 5")
                Text("Line 6")
                Text("Line 7")
                Text("Line 8")
                Text("Line 9")
                Text("Line 10")
            }
        }.font(.system(size: 80, weight: .bold))
    }
}

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

    var body: some View {
        TabView(selection: $selection) {
            HomeView()
                .tabItem {
                    Image(systemName: "house")
                }.tag(0)

            Text("Out")
                .tabItem {
                    Image(systemName: …
Run Code Online (Sandbox Code Playgroud)

tabview swiftui

12
推荐指数
2
解决办法
4725
查看次数

Tabview 索引在白色背景下不起作用

我正在尝试使用名为 TabView 的 iOS14 功能。

我正在尝试创建一个轮播方面。一切正常,除了索引指示器没有显示(图像中的那 3 个点)。在与白色不同的背景上,会出现点,但如果背景是白色,则不会显示点。我期待看到它们呈某种灰色。

你知道这件事的根源是什么吗?我试图找到一种不使用的替代方案,".indexViewStyle(PageIndexViewStyle(backgroundDisplayMode: .always))"因为它会给点添加奇怪的颜色背景。

import SwiftUI

struct ContentView: View {
    var body: some View {
      SwiftUI.TabView {
                Text("test1")
                Text("test2")
                Text("test3")
                Text("test4")
            }
            .frame(width: UIScreen.main.bounds.width, height: 100)
            .tabViewStyle(PageTabViewStyle(indexDisplayMode: .automatic))
    }
}
Run Code Online (Sandbox Code Playgroud)

这是它在红色背景上的样子(在白色上什么也没有):

在此输入图像描述

indexing styles tabview swift

12
推荐指数
1
解决办法
1102
查看次数

如何在PageTabView中梳理相邻页面?

我正在使用 SwiftUI 2 并使用 TabView 和 PageTabViewStyle。

现在,我正在寻找一种方法来“逗弄”与当前页面相邻的页面,如下所示:

图片来源:http://ios-dev.co/swiftui/how-to-create-page-view-in-swiftui/

用TabView和PageTabViewStyle可以实现这种效果吗?

我已经尝试将 TabView 的宽度减小为windowWidth-50。然而,这并没有导致相邻页面在侧面可见。50px相反,此更改在右窗口边框左侧引入了硬垂直边缘,新页面将滑入其中。

ios tabview swift swiftui pagetabviewstyle

11
推荐指数
1
解决办法
1378
查看次数