(如果有Apple的人看到这个,我已经提交了反馈:FB8910881)
我正在尝试构建一个SwiftUI应用程序,其布局类似于Apple Music应用程序 - 艺术家页面或者像苹果的SwiftUI教程中一样(Landmarks app)。在应用程序内部,您可以在列表项上垂直滚动,在所有行上水平滚动。
在我的应用程序中,我有一个行列表,位于ScrollView
(垂直)内。行本身垂直滚动,并包含ScrollView
和LazyHGrid
。它在iOS上工作,但在macOS上不起作用。
在iOS上,我可以通过模拟器中的点击和拖动来垂直地滚动列表和水平地滚动行项,非常顺畅。
然而,在macOS上,如果我在行上面,只能垂直滚动...通过魔术鼠标向上/向下/向左/向右滚动。该行的ScrollView似乎捕捉了垂直滚动...在Apple Music应用程序中,如果您在艺术家播放列表行上,则可以垂直和水平滚动。
Xcode 12.2和Xcode 12.3 beta,macOS BigSur 11.0.1
这是我的代码:
import SwiftUI
struct ScrollViewProblem: View {
var body: some View {
ScrollView {
HStack {
Text("Scrolling Problem")
.font(.largeTitle)
Spacer()
}.padding()
ScrollRow()
ScrollRow()
ScrollRow()
ScrollRow()
}
}
}
struct ScrollRow: View {
let row = [
GridItem(.flexible(minimum: 200))
]
var body: some View {
VStack {
HStack {
Text("Row")
.font(.largeTitle)
Spacer()
}
ScrollView(.horizontal) {
LazyHGrid(rows: row, spacing: 20) {
ForEach(1..<7) { index in
Rectangle()
.fill(Color.blue)
.frame(width: 200, height: 200)
}
}
}
}
.padding()
}
}
struct ScrollViewProblem_Previews: PreviewProvider {
static var previews: some View {
ScrollViewProblem()
}
}