wigging
wigging

Reputation: 9190

SwiftUI scroll view partially displays last item in Mac app

How do I properly setup a ScrollView with SwiftUI in a Mac app? The example below clips the last item.

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)
    }
}

As shown in the image, the last item is clipped by the window. This view is scrolled to the bottom but the "Otto" item does not fully display.

enter image description here

Upvotes: 0

Views: 794

Answers (1)

user7946504
user7946504

Reputation:

If you remove the .fullSizeContentView from the window initialization in AppDelegate.swift so it looks like the following, then it will fully display the list.

window = NSWindow(
    contentRect: NSRect(x: 0, y: 0, width: 480, height: 300),
    styleMask: [.titled, .closable, .miniaturizable, .resizable],
    backing: .buffered, defer: false)

I don't know if this is a bug or by design.

Upvotes: 0

Related Questions