lineLimit в View не работает в SwiftUI - PullRequest
0 голосов
/ 24 октября 2019

Текст внутри моего чата не будет ломаться в новой строке.

Вот «пузырь», извлеченный в собственном представлении

struct chatPartnerBubble: View {
    var textMsg: String
    var body: some View {
        VStack(alignment: .leading) {
            HStack {
                HStack {
                    Text(textMsg)
                        .foregroundColor(Color.white)
                        .padding(10)
                        .lineLimit(nil)
                }
                .background(Color.blue)
                .cornerRadius(12)
                Spacer()
            }.padding(.leading)
        }
    }
}

, а вот ChatView

ScrollView {
            VStack {
                chatPartnerBubble(textMsg: "text")
                chatPartnerBubble(textMsg: "text")
                chatPartnerBubble(textMsg: "text")
                chatPartnerBubble(textMsg: "text")
                chatPartnerBubble(textMsg: "text")
                chatPartnerBubble(textMsg: "text")
            }
        }

Но если textMsg длиннее, он просто ставит точки ... и не разбивается на новую строку

Ответы [ 2 ]

0 голосов
/ 24 октября 2019

Вы можете достичь желаемой функциональности, выбрав Список поверх Scrollview. Если учесть фактор масштабируемости в нашем приложении для чата, то List намного лучше, чем Scrollview. Поскольку представления могут быть легко использованы повторно в List.

struct chatPartnerBubble: View {
    var textMsg: String
    var body: some View {
        VStack{
            Text(textMsg)
            .foregroundColor(Color.white)
            .padding(10)
            .lineLimit(nil)
        }
        .background(Color.blue)
        .cornerRadius(12)
    }
}


struct ContentView: View {

    var body: some View {
        List {
            chatPartnerBubble(textMsg: "text1 111111111 1 11111111 1  1 1 1 1 1 1 1  111111111111")
            chatPartnerBubble(textMsg: "text2 22222  222222222 2222222222222 222 2 2 2 22 2 222222")
            chatPartnerBubble(textMsg: "text3 333333 3 333 333 3 3 3 3 33333333 3 33333333 3333333")
        }
        .padding(.top)
        .onAppear {
            UITableView.appearance().separatorColor = .clear
        }
        .onDisappear {
            UITableView.appearance().separatorColor = .gray
        }
    }
}

В случае, если у нас есть более одного табличного представления в нашем приложении, поэтому блоки OnAppear и onDisappear используются, чтобы скрыть / показать разделитель только для представленного выше представления таблицы сообщений.

0 голосов
/ 24 октября 2019

Кажется, у меня нормально работает, я использую Xcode 11.2 Beta 2, поэтому проблема может быть в версии Xcode. Я помню, у меня была похожая проблема раньше, и решение было VStack(alignment: .center, spacing: 0), может быть, это помогает

enter image description here

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