带有 PageTabViewStyle() 的 TabView 未在 ScrollView 中使用可用高度
TabView with PageTabViewStyle() not using available height in ScrollView
所以我有一个如下所示的 TabView,但是当我尝试在 ScrollView 中实现它时,我总是必须给它一个固定的高度。有没有办法告诉 tabview 在 scrollView 中使用它需要的 space?我不知道 TabView 内部内容的高度(顺便说一句,它会随时间变化),所以固定高度对我不起作用。
我尝试了 .frame(maxHeight: .infinity),但这似乎不起作用
import SwiftUI
struct TEST: View {
var body: some View {
ScrollView {
TabView {
Text("Hello World")
}
.tabViewStyle(PageTabViewStyle(indexDisplayMode: .never))
.frame(maxHeight: .infinity)
// only .frame() with fixed Height works...
}
}
}
你需要使用像屏幕高度一样的固定高度,因为滚动视图的高度是无限的。因此,当您在滚动视图内的对象上设置无限高度时,它只需要内容真正需要的 space 。我建议您像这样在 TabView 上使用屏幕高度:
.frame(height: UIScreen.main.bounds.height)
或者使用 GeometryReader 为您提供 ScrollView 所采用的高度,然后将其应用于 TabView 框架,如下所示:
struct MyView: View {
var body: some View {
GeometryReader { proxy in
ScrollView {
TabView {
Text("Hello World")
}
.tabViewStyle(PageTabViewStyle(indexDisplayMode: .never))
.frame(height: proxy.size.height)
}
}
}
}
所以我有一个如下所示的 TabView,但是当我尝试在 ScrollView 中实现它时,我总是必须给它一个固定的高度。有没有办法告诉 tabview 在 scrollView 中使用它需要的 space?我不知道 TabView 内部内容的高度(顺便说一句,它会随时间变化),所以固定高度对我不起作用。
我尝试了 .frame(maxHeight: .infinity),但这似乎不起作用
import SwiftUI
struct TEST: View {
var body: some View {
ScrollView {
TabView {
Text("Hello World")
}
.tabViewStyle(PageTabViewStyle(indexDisplayMode: .never))
.frame(maxHeight: .infinity)
// only .frame() with fixed Height works...
}
}
}
你需要使用像屏幕高度一样的固定高度,因为滚动视图的高度是无限的。因此,当您在滚动视图内的对象上设置无限高度时,它只需要内容真正需要的 space 。我建议您像这样在 TabView 上使用屏幕高度:
.frame(height: UIScreen.main.bounds.height)
或者使用 GeometryReader 为您提供 ScrollView 所采用的高度,然后将其应用于 TabView 框架,如下所示:
struct MyView: View {
var body: some View {
GeometryReader { proxy in
ScrollView {
TabView {
Text("Hello World")
}
.tabViewStyle(PageTabViewStyle(indexDisplayMode: .never))
.frame(height: proxy.size.height)
}
}
}
}