TabView с PageTabViewStyle () не использует доступную высоту в ScrollView
Итак, у меня есть TabView, как показано ниже, но когда я пытаюсь реализовать его в ScrollView, мне всегда приходится задавать ему фиксированную высоту. Есть ли способ указать tabview использовать пространство, которое ему нужно в scrollView? Я не знаю высоты внутреннего содержимого (которое, кстати, меняется со временем) 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...
}
}
}
1 ответ
Вам нужно использовать фиксированную высоту, такую как высота экрана, потому что у scrollview есть бесконечная высота. Поэтому, когда вы устанавливаете бесконечную высоту объекта внутри scrollview, он занимает только пространство, которое действительно нужно содержимому. Я рекомендую вам использовать высоту экрана в TabView следующим образом:
.frame(высота: 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)
}
}
}
}