SwiftUI - многострочный текст в macOS

Как отображать текстовые элементы пользовательского интерфейса с несколькими обернутыми строками в списке SwiftUI.

Следующий код создает следующее изображение, и я не могу найти способ чтобы эта работа работала так, как задумано.

let test = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Donec enim diam vulputate ut pharetra. Sed turpis tincidunt id aliquet risus feugiat in. Interdum velit laoreet id donec ultrices tincidunt arcu non.  Lorem END"


var body: some View {
    List(){
        Text(test).lineLimit(nil)
        Divider()
        Text(test).fixedSize(horizontal: false, vertical: true)
        Divider()
        Text(test)
    }
}

.lineLimit(nil) не работает


.fixedSize(horizontal: false, vertical: true) тоже не работает


person EM77    schedule 21.03.2020    source источник
comment
Протестировано с Xcode 11.2 / iOS 13.2 и Xcode 11.4 / iOS 13.4 - все три варианта дают одинаковый правильно обернутый текст.   -  person Asperi    schedule 21.03.2020
comment
что вы имеете в виду под словом "как задумано"?   -  person user3441734    schedule 21.03.2020
comment
Извините, я не упомянул, что это для macOS   -  person EM77    schedule 21.03.2020
comment
как многострочный переносимый текст   -  person EM77    schedule 21.03.2020
comment
вместо этого используйте ScrollView   -  person user3441734    schedule 21.03.2020


Ответы (2)


Хорошо, вот для macOS (также добавлен тег для лучшей видимости), не по умолчанию, но также достижимый для List, при необходимости производительность List и т. Д. И без какого-либо жесткого кодирования.

демонстрация

Протестировано с Xcode 11.4 / macOS 10.15.3

var body: some View {
    GeometryReader { gp in
        List {
            Text(self.test)
                .padding(.trailing)
                .frame(width: gp.size.width)
            Divider()
        }
    }
}
person Asperi    schedule 21.03.2020
comment
Как всегда отличный ответ - person davidev; 22.03.2020

вам нужно использовать ScrollView, а не List

import SwiftUI

struct ContentView: View {
    let test = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Donec enim diam vulputate ut pharetra. Sed turpis tincidunt id aliquet risus feugiat in. Interdum velit laoreet id donec ultrices tincidunt arcu non.  Lorem END"


    var body: some View {
        ScrollView {
            Text(test).lineLimit(1).padding()
            Text(test).lineLimit(3).padding()
            Text(test).padding()
        }.frame(maxWidth: 400)
    }
}


struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}

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

person user3441734    schedule 21.03.2020