[这里有补充工具栏列表,其中有我的模型视图中的项目列表。当我点击顶部时,项目正在响应。但是,很少有底部项目(快速移动的单元格)对单击和行没有响应,但没有响应,这取决于我正在检查的设备。假设我的列表中有12个项目,在iPhone 8中最多可以运行7行,对于iPhone 11 pro,最多可以有9行。
SideMenuListView.swift
这是侧边栏上列出菜单的代码。
List {
ForEach(self.viewModel.data,id: \.id) { item in
ZStack(alignment:.leading) {
SideMenuCell(image: Image(item.imageName), title: item.name)
.frame(height: 42)
NavigationLink.init(destination: item.view) {
EmptyView()
}
}
.buttonStyle(PlainButtonStyle())
}
}
用于创建侧边菜单的代码:
SideMenuContentView.swift
GeometryReader { _ in
EmptyView()
}
.background(Color.gray.opacity(0.3))
.opacity(self.isOpen ? 1.0 : 0.0)
.animation(Animation.easeIn.delay(0.25))
.onTapGesture {
// Close Menu on click outside menu.
self.menuClose()
}
VStack(alignment: .leading, spacing: 0){
/// Set Profile View on top.
SideMenuHeader().fixedSize()
.frame(width: self.width,height: 150)
.offset(x: self.isOpen ? 0 : -self.width)
.animation(.default)
/// Set Sidemenu View.
HStack {
SideMenuListView(viewModel: SideMenuListViewModel())
.frame(width: self.width)
.background(Color.white)
.offset(x: self.isOpen ? 0 : -self.width)
.animation(.default)
.onDisappear {
// close side menu
self.isOpen = false
}
Spacer()
}
}
}
我的手机上有东西吗?我该如何调试内容上是否有覆盖层。
无法测试提供的代码,因此仅通过代码读取,我认为问题是由于.offset造成的
SideMenuHeader().fixedSize()
.frame(width: self.width,height: 150)
.offset(x: self.isOpen ? 0 : -self.width) // << here !!
.animation(.default)
/// Set Sidemenu View.
HStack {
SideMenuListView(viewModel: SideMenuListViewModel())
.frame(width: self.width)
.background(Color.white)
.offset(x: self.isOpen ? 0 : -self.width) // << here !!
这是因为.offset
不会更改布局/框架/ contentArea的视图,它仅移动呈现在屏幕上的视觉表示,因此真实视图不在用户看到它并尝试进行交互的位置。
因此解决方案是删除那些偏移量并重新考虑布局。