我在我的应用程序中设置了一个 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) 我在 SwiftUI 2.0 和 iOS14 中遇到了非常奇怪的行为。
当键盘出现在屏幕上时,会自动调用其他选项卡视图的 OnAppear 方法。
但是,这很好用 Xcode 11.7
这是产生上述错误的代码。
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) 我想在每次点击选项卡时运行一个函数。
在下面的代码中(通过使用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)
我怎样才能得到这两件事:
我试图使用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)
任何人都可以解释为什么这不起作用,我能做些什么来解决它?
如果有任何更改,我会在出现选项卡项时调用 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)
有没有办法避免这种情况?
如何使 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 能够响应内容的高度。关于如何实现这一目标有什么想法吗?
我有一个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) 使用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 的 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)
这是它在红色背景上的样子(在白色上什么也没有):
我正在使用 SwiftUI 2 并使用 TabView 和 PageTabViewStyle。
现在,我正在寻找一种方法来“逗弄”与当前页面相邻的页面,如下所示:
用TabView和PageTabViewStyle可以实现这种效果吗?
我已经尝试将 TabView 的宽度减小为windowWidth-50。然而,这并没有导致相邻页面在侧面可见。50px相反,此更改在右窗口边框左侧引入了硬垂直边缘,新页面将滑入其中。