View中的lineLimit在SwiftUI中不起作用

时间:2019-10-23 21:41:04

标签: swiftui

我的聊天气泡中的文本不会换行。

这是在自己的视图中提取的“聊天气泡”

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 :(得分:0)

我似乎对我很好,我正在使用Xcode 11.2 Beta 2,所以Xcode版本可能是问题所在。我记得以前也遇到过类似的问题,解决方法是VStack(alignment: .center, spacing: 0)也许有帮助

enter image description here

答案 1 :(得分:0)

您可以通过选择“在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块仅用于隐藏/显示以上消息表视图的分隔符。