SwiftUI 滚动视图部分显示 Mac 应用中的最后一项
SwiftUI scroll view partially displays last item in Mac app
如何在 Mac 应用程序中使用 SwiftUI 正确设置 ScrollView?下面的示例剪辑了最后一项。
import SwiftUI
struct NameRow: View {
var name: String
var body: some View {
VStack {
Spacer()
Text("\(name)")
Spacer()
Divider()
}.frame(width: 100, height: 40)
}
}
struct ContentView: View {
let names = ["Homer", "Marge", "Lisa", "Bart", "Maggie", "Krusty", "Burns", "Nelson", "Otto"]
var body: some View {
VStack {
ScrollView {
ForEach(names, id: \.self) { name in
NameRow(name: name)
}
}
}.frame(width: 100, height: 160)
}
}
如图所示,最后一项被 window 剪裁。此视图已滚动到底部,但 "Otto" 项目未完全显示。
如果在 AppDelegate.swift
中从 window
初始化中删除 .fullSizeContentView
使其如下所示,那么它将完全显示列表。
window = NSWindow(
contentRect: NSRect(x: 0, y: 0, width: 480, height: 300),
styleMask: [.titled, .closable, .miniaturizable, .resizable],
backing: .buffered, defer: false)
我不知道这是错误还是设计使然。
如何在 Mac 应用程序中使用 SwiftUI 正确设置 ScrollView?下面的示例剪辑了最后一项。
import SwiftUI
struct NameRow: View {
var name: String
var body: some View {
VStack {
Spacer()
Text("\(name)")
Spacer()
Divider()
}.frame(width: 100, height: 40)
}
}
struct ContentView: View {
let names = ["Homer", "Marge", "Lisa", "Bart", "Maggie", "Krusty", "Burns", "Nelson", "Otto"]
var body: some View {
VStack {
ScrollView {
ForEach(names, id: \.self) { name in
NameRow(name: name)
}
}
}.frame(width: 100, height: 160)
}
}
如图所示,最后一项被 window 剪裁。此视图已滚动到底部,但 "Otto" 项目未完全显示。
如果在 AppDelegate.swift
中从 window
初始化中删除 .fullSizeContentView
使其如下所示,那么它将完全显示列表。
window = NSWindow(
contentRect: NSRect(x: 0, y: 0, width: 480, height: 300),
styleMask: [.titled, .closable, .miniaturizable, .resizable],
backing: .buffered, defer: false)
我不知道这是错误还是设计使然。