#ios #swift #swiftui #swiftui-tabview
Вопрос:
У меня есть а TabView
, которое вложено в а ZStack
. Моя цель состоит в том, чтобы сделать ZStack
так, чтобы ребенок TabView
занимал только пространство, необходимое для размещения видов внутри TabView
. .fixedSize()
Модификатор выполняет это, если я изменяю свой TabView
на a VStack
, но с помощью a TabView
он сжимает TabView
слишком маленький. Как я могу достичь своей цели, не скрывая TabView
при этом ее содержание?
struct ContentView: View {
var body: some View {
ZStack {
Color.red
TabView {
VStack {
Text("One")
Text("One")
Text("One")
}
VStack {
Text("Two")
Text("Two")
Text("Two")
}
VStack {
Text("Three")
Text("Three")
Text("Three")
}
}
.tabViewStyle(.page)
}
.fixedSize() //why doesn't this work as expected?
}
}
Комментарии:
1. Ответ на ваш вопрос заключается в том , что
TabViews
, напримерScrollViews
ListViews
, и т. Д., Не имеют внутреннего размера..fixedSize
уменьшает размер представления до его внутреннего или естественного размера. Таким.fixedSize
образом, надев их, вы уменьшаете их размеры до неузнаваемости. Единственное, что уменьшилоTabView
бы это должным образом, — это поставить.frame()
на нем «а».2. Спасибо @Yrb, но я не хочу использовать жестко заданную высоту кадра по причинам разных размеров экрана и динамических размеров текста, какие еще варианты существуют для того, чтобы этот вид вкладок был только того размера, который ему нужен?
3. Хотя я могу понять, что вы не хотите жестко их кодировать, возможно, вы сможете придумать какую-то ценность. Я попробовал найти решение,
PreferenceKeys
но оно не сработало. Я не думаю, что они когда-либо думали, что aTabView
будет использоваться подобным образом.