远程图像使用 List 正确加载,但在使用具有嵌入式 VStack 宽度 SwiftUI 的 ScrollView 时不加载
Remote Image loads correctly using List, but does not load when using ScrollView with embeded VStack with SwitUI
我正在 List
中获取远程图像。这工作正常。
但是,如果我将代码放在 ScrollView
中,它就不起作用
ScrollView {
HStack {
我已经提供了示例 XCode 11-Beta SwiftUI project here。只需下载 运行。下载后,查看 ContentView.swift
文件。 (见图)
注释不起作用的部分,取消注释起作用的部分以查看差异。 List 有效,但 scrollView 失败。
知道为什么吗?
[更新]:
我现在已将 struct BuggedView
上的代码更改为以下内容:
struct BuggedView : View {
@ObjectBinding var viewModel = EventController.ViewModel()
var body: some View {
ZStack(alignment: .top) {
GeometryReader() { x in
ScrollView {
ForEach(0..<self.viewModel.events.count) { index in
EventComponent(event: self.viewModel.events[index]).padding(.top).frame(width: x.size.width)
}
}
}
List {
Spacer().frame(height: 183)
ForEach(0..<self.viewModel.events.count) { index in
EventComponent(event: self.viewModel.events[index]).padding(.top)
}
}.offset(x: 200, y: 0)
}//.frame(width:400, height: 400)
}
}
进行此更改后,您可以同时在屏幕上看到图像的两个版本。在更新的代码中,请注意我已经注释掉了一些框架代码。好吧,这是结果
- 带有注释的框架代码 - 它不起作用
- 框架代码未注释 - 它确实有效
可能是 SwiftUI 错误?
这几乎可以肯定是向 Apple 报告的 SwiftUI 错误,应该在某个时候修复。 .frame 修饰符应该没有像您看到的那样的效果。
我正在 List
中获取远程图像。这工作正常。
但是,如果我将代码放在 ScrollView
ScrollView {
HStack {
我已经提供了示例 XCode 11-Beta SwiftUI project here。只需下载 运行。下载后,查看 ContentView.swift
文件。 (见图)
注释不起作用的部分,取消注释起作用的部分以查看差异。 List 有效,但 scrollView 失败。
知道为什么吗?
[更新]:
我现在已将 struct BuggedView
上的代码更改为以下内容:
struct BuggedView : View {
@ObjectBinding var viewModel = EventController.ViewModel()
var body: some View {
ZStack(alignment: .top) {
GeometryReader() { x in
ScrollView {
ForEach(0..<self.viewModel.events.count) { index in
EventComponent(event: self.viewModel.events[index]).padding(.top).frame(width: x.size.width)
}
}
}
List {
Spacer().frame(height: 183)
ForEach(0..<self.viewModel.events.count) { index in
EventComponent(event: self.viewModel.events[index]).padding(.top)
}
}.offset(x: 200, y: 0)
}//.frame(width:400, height: 400)
}
}
进行此更改后,您可以同时在屏幕上看到图像的两个版本。在更新的代码中,请注意我已经注释掉了一些框架代码。好吧,这是结果
- 带有注释的框架代码 - 它不起作用
- 框架代码未注释 - 它确实有效
可能是 SwiftUI 错误?
这几乎可以肯定是向 Apple 报告的 SwiftUI 错误,应该在某个时候修复。 .frame 修饰符应该没有像您看到的那样的效果。