如何在SwiftUI中实现多行文本视图

时间:2019-08-15 09:40:28

标签: swift swiftui

我想获得用户的标题,并添加评论,例如instagram在swiftUI中具有的功能。但是以某种方式,评论总是被截断。

img

我已经尝试使用.lineLimit(nil),但是没有用。

HStack(alignment: .top) {
    Text(post.user.username).font(.subheadline).fontWeight(.bold)
    Text(post.description).font(.subheadline).fontWeight(.light)
        .lineLimit(nil).multilineTextAlignment(.leading)
}

我希望它像这样。 ig

2 个答案:

答案 0 :(得分:3)

为了在一行上具有两个Text对象,并具有多个样式选项,将它们包装到新行上,您需要创建多个对象并将它们组合为一个。

所以拿两个Text对象,

Text(post.user.username).font(.subheadline).fontWeight(.bold)
Text(post.description).font(.subheadline).fontWeight(.light)
    .lineLimit(nil).multilineTextAlignment(.leading)

我们将使用reduce来组合它们。

func combineTextObjects(_ objects: [Text]) -> Text{
    return objects[1...].reduce(objects[0], +)
}

像这样称呼combineTextObjects

HStack(alignment: .top) {
    combineTextObjects([
        Text(post.user.username).font(.subheadline).fontWeight(.bold),
        Text(post.description).font(.subheadline).fontWeight(.light)
        .lineLimit(nil).multilineTextAlignment(.leading)
    ])
}

答案 1 :(得分:1)

将.fixedSize(水平:false,垂直:true)添加到文本