具有PageTabViewStyle的TabView不使用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...
        }
    }
}

解决方法

您需要使用固定高度,如屏幕高度,因为滚动视图具有无限高度。因此,当您在滚动视图内的对象上设置无限高度时,它只占用内容真正需要的空间。我建议您像这样在 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)
                }
            }
    
        }
}

即使您的问题很久以前就被问到了,我想您已经找到了解决方法,但我认为响应螨可以帮助遇到问题的其他人。 ?

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...