我有一个简单的视图,其中包含一个VStack
,一行文本包含一个列表标题(认为是标题),后跟一个List
。
struct CampaignView : View {
let campaign: Campaign
init(from campaign: Campaign) {
self.campaign = campaign
}
var body: some View {
VStack {
ObservationRow.titles
.padding([.top, .leading], 8)
List(campaign.observations) {
ObservationRow(from: $0)
}
}
}
}
在模拟器上,一切看起来都不错,但是当我在目标(macOS)上运行它时,标题行丢失了。注意:预览和目标应用程序的内容不同。这是缺少的第一行。
当我在标题上方添加三个任意Text字段时,最上面的元素再次丢失,并且现在显示了标题,因为它们在堆栈的下方。
var body: some View {
VStack {
Text("A")
Text("B")
Text("C")
ObservationRow.titles
.padding([.top, .leading], 8)
List(campaign.observations) {
ObservationRow(from: $0)
}
}
}
出什么问题了?
答案 0 :(得分:0)
这是SwiftUI框架中的错误,已报告给Apple。重现此问题的最简单方法是从一个干净的基于SwiftUI的macOS项目开始。使用此主体修改提供的ContentView。
dangerouslySetInnerHTML
Xcode预览将正确显示,但是在Mac上运行新应用时,窗口标题栏后面缺少“ A”文本元素。我们知道它会被标题栏剪切,因为SwiftUI独自向Link
添加了灰色背景,其中只有两行仍然可见。
目前的解决方法是在VStack前面添加一个<a>
元素,以便对其进行裁剪,但允许显示其余的堆栈。
答案 1 :(得分:0)
从AppDelegate.swift中的窗口设置中删除.fullSizeContentView
,如下所示:
window = NSWindow(
contentRect: NSRect(x: 0, y: 0, width: 480, height: 300),
styleMask: [.titled, .closable, .miniaturizable, .resizable],
backing: .buffered, defer: false)
现在,您的内容视图将显示全部!