我对 SwiftUI 有疑问
有一个问题
- 首次启动视图中不出现黄色视图
- 移动到家,使应用程序进入后台模式
- 移动到应用程序(前台)
- 然后出现黄色视图
我在步骤 1 中捕获了视图层次结构。
(左侧是视图层次结构捕获,右侧是模拟器)
视图层次结构捕获显示黄色方块,但模拟器未显示黄色方块
我检查了视图面包屑,但两者都相同,所以我不知道。
我确定这不是网络问题。
出现黄色方块有两种方式
- 背景 -> 前景
- 显示警报 -> 解除警报
我不确定这是一个框架错误还是其他。
另外,是否有任何 API 可以打印 swiftUI 渲染请求成功或失败?
提前谢谢你,圣诞快乐!
(左边是黄色方块出现在模拟器上之前/右边是黄色方块出现在模拟器上之后)
编辑 - 添加示例代码
内容视图
import SwiftUI
struct ContentView: View {
@ObservedObject var viewModel : viewModel
@ObservedObject var params : otherViewModel
var body: some View {
HorizontalScrollView(viewModel: viewModel, someParmas: params)
.padding(.leading, 24)
.frame(width: UIScreen.main.bounds.width, height:400)
.background(Color.red)
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView(viewModel: viewModel(homeAPI: HomeAPI()), params: otherViewModel())
}
}
import SwiftUI
struct HorizontalScrollView: View {
@ObservedObject var viewModel: viewModel
@ObservedObject var holder : otherViewModel
private var homeHightlightRange: Range<Int> {
return 0..<(viewModel.something?.somethingList?.count ?? 0)
}
init(viewModel: viewModel, someParmas: otherViewModel) {
self.viewModel = viewModel
self.holder = someParmas
}
var body: some View {
VStack(spacing: 20) {
HStack(spacing: 0) {
Text("Merry christmas")
.font(.system(size: 24))
.foregroundColor(.white)
.bold()
.onTapGesture {
viewModel.getHighlight()
}
Spacer()
}
ScrollView(.horizontal, showsIndicators: false, content: {
HStack(alignment:.bottom, spacing: 14) {
ForEach(homeHightlightRange, id: \.self) { index in
Color.yellow.frame(width:200, height:300)
}
}
})
}
.frame(height: 339)
}
}
struct HighlightView_Previews: PreviewProvider {
static var previews: some View {
HorizontalScrollView(viewModel: viewModel(homeAPI: HomeAPI()),someParmas: otherViewModel())
.previewLayout(.sizeThatFits)
}
}
homeHightlightRange 是通过 viewModel 从服务器获取的
