Отсутствует верхний элемент в VStack при запуске по цели - PullRequest
0 голосов
/ 17 июня 2019

У меня есть простое представление, содержащее 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), строка с заголовками отсутствует.ПРИМЕЧАНИЕ. Содержание предварительного просмотра и целевого приложения различаются.Это верхняя строка, которая отсутствует.enter image description here

Когда я добавил три произвольных текстовых поля над заголовком, самый верхний элемент снова отсутствует, и заголовки теперь отображаются, потому что они находятся ниже по стеку.enter image description here

var body: some View {
    VStack {
      Text("A")
      Text("B")
      Text("C")
      ObservationRow.titles
        .padding([.top, .leading], 8)
      List(campaign.observations) {
        ObservationRow(from: $0)
      }
    }
  }

В чем проблема?

Ответы [ 2 ]

0 голосов
/ 22 июня 2019

Удалите .fullSizeContentView из настроек вашего окна в AppDelegate.swift, чтобы оно выглядело следующим образом:

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

Теперь в вашем представлении содержимого отобразятся все!

0 голосов
/ 17 июня 2019

Это ошибка в инфраструктуре SwiftUI, о которой было сообщено в Apple.Самый простой способ воссоздать эту проблему - начать с чистого MacOS-проекта на основе SwiftUI.Измените предоставленный ContentView с этим телом.

var body: some View {
  VStack {
    Text("A")
    List(1...4) {
      Text("\($0)")
    }
  }
}

Предварительный просмотр Xcode будет отображаться правильно, но когда новое приложение запускается на Mac, текстовый элемент «A» отсутствует за строкой заголовка окна,Мы знаем, что он обрезается строкой заголовка, потому что SwiftUI добавляет (самостоятельно) серый фон к Text("A"), из которого все еще видна только пара строк.

Обходной путь на данный момент заключается в простомдобавьте элемент Text(" ") к VStack так, чтобы он обрезался, но позволял отображать остальную часть стека.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...