SwiftUI 滚动视图部分显示 Mac 应用程序中的最后一项

Posted

技术标签:

【中文标题】SwiftUI 滚动视图部分显示 Mac 应用程序中的最后一项【英文标题】:SwiftUI scroll view partially displays last item in Mac app 【发布时间】:2019-08-04 00:43:54 【问题描述】:

如何在 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)
    

如图所示,最后一项被窗口裁剪。此视图滚动到底部,但“Otto”项未完全显示。

【问题讨论】:

【参考方案1】:

如果您从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)

我不知道这是一个错误还是设计使然。

【讨论】:

删除 . fullSizeContentView 解决了这个问题。感谢您的建议。

以上是关于SwiftUI 滚动视图部分显示 Mac 应用程序中的最后一项的主要内容,如果未能解决你的问题,请参考以下文章

SwiftUI 中的地图和滚动视图

在Mac应用中使用SwiftUI更改动画窗口大小

没有部分的 SwiftUI 主列表可滚动标题视图?

如何在 SwiftUI 中将滚动视图添加到屏幕的特定部分? [复制]

如何使用滚动视图单击列表部分内的项目以导航到详细信息页面 SwiftUI

滑动选项 swiftUI 滚动视图