.lineLimit не работает в строке меню Mac — SwiftUI

#macos #swiftui

#macos #swiftui

Вопрос:

У меня есть это представление для приложения строки меню Mac, которое создает изображение ниже.

 VStack {
    Text("Title of App").font(.title).frame(alignment: .center)
    List(results, id: .title) { item in
    VStack(alignment: .leading) {
                    Text(item.title)
                        .font(.headline)
                    Text(item.description)
     }
}
  

введите описание изображения здесь

Я хочу сделать так, чтобы текст, содержащий item.description, состоял из нескольких строк, которые можно выполнить с помощью lineLimit но когда я применяю его к элементу, он остается точно таким же. Я также попытался использовать .fixedSize(horizontal: false, vertical: true) сначала в item.description, а затем в VStack, к которому он принадлежит, что привело к следующему результату.

введите описание изображения здесь

Я использую macOS 10.5.3 с XCode версии 11.6

Ответ №1:

Вот решение (протестировано с Xcode 11.4 / macOS 10.15.6)

 VStack {
    Text("Title of App").font(.title).frame(alignment: .center)

    // use geometry reader to fix list content width
    GeometryReader { gp in
       List(results, id: .title) { item in
         VStack(alignment: .leading) {
            Text(item.title)
                .font(.headline)
            Text(item.description)
         }
         .frame(width: gp.size.width)   // << here !!
       }
   }
}