【发布时间】:2019-06-08 14:59:23
【问题描述】:
在我的 SwiftUI 应用程序中,我正在尝试实现类似这样的 UI:
我已经为类别 1 和类别 2 添加了两行。结果如下所示:
NavigationView {
VStack(alignment: .leading) {
CategoryRow(...)
CategoryRow(...)
Spacer()
}
.navigationBarTitle(Text("Featured"))
}
现在,当添加第三个类别的视图(带有图像的 VStack)时,会发生以下情况:
这发生在我将Spacer()替换为VStack之后:
VStack(alignment: .leading) {
Text("Rivers")
.font(.headline)
ForEach(self.categories["Rivers"]!.identified(by: \.self)) { landmark in
landmark.image(forSize: 200)
}
}
我的CategoryRow实现如下:
VStack(alignment: .leading) {
Text(title)
.font(.headline)
ScrollView {
HStack {
ForEach(landmarks) { landmark in
CategoryItem(landmark: landmark, isRounded: self.isRounded)
}
}
}
}
问题
似乎视图被压缩了。我找不到任何抗压缩性或包含优先级修饰符的内容来解决此问题。
我还尝试在CategoryRow 上使用.fixedSize() 和.frame(width:height:)。
如何防止压缩这些视图?
更新
我尝试将整个外部堆栈视图嵌入到滚动视图中:
NavigationView {
ScrollView { // also tried List
VStack(alignment: .leading) {
CategoryRow(...)
CategoryRow(...)
ForEach(...) { landmark in
landmark.image(forSize: 200)
}
}
.navigationBarTitle(Text("Featured"))
}
}
...结果更糟:
【问题讨论】:
-
你试过
.scaledToFit()吗?