SwiftUI 入门教程:Text 如何限制文本行数

1,651 阅读2分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第4天,点击查看活动详情

在 SwiftUI 中,Text 的作用等同于 UIKit 库 中的 UILabel,都是用来显示静态文本。使用如下:

Text("Hello, world!")

效果: 截屏2022-04-01 下午3.32.43.png 在你的内容视图的预览窗口中,你可以看到“Automatic preview updating paused” 的提示和 Resume 按钮,点击 Resume 可以让 Swift 开始构建你的代码并实时的显示出来。当然,你也可以使用它的快捷键:option + command + p来随时启动它。

截屏2022-04-01 下午3.37.20.png

默认情况下,Text 会尽可能包含它的内容,即它会有很多行。如果你不想这样,想限制它展示的行数,可以使用 lineLimit,代码如下:

Text("Hello, world!Hello, world!Hello, world!Hello, world!Hello, world!Hello, world!Hello, world!Hello, world!Hello, world!Hello, world!Hello, world!Hello, world!Hello, world!Hello, world!Hello, world!Hello, world!")
    .lineLimit(3)

Tip:注意上面的 lineLimit 是放在了 Text 的右下方,这种代码风格并不是必须的,你也可以把它放在 Text 的后面,只不过这种风格使代码更加简洁易读。

截屏2022-04-01 下午3.41.19.png

如果你给 Text 赋值的字符串很长,并且限定了它显示的行数。导致 Text 并不能完整的显示字符串时,SwiftUI 默认会对字符串进行裁剪并在尾部显示...

如果你不想使用这种省略显示方式,可以修改 truncationMode 来得到想要的样式。比如从文本中间来显示省略号:

Text("Hello, world!Hello, world!Hello, world!Hello, world!Hello,")
    .lineLimit(1)
    .truncationMode(.middle)

截屏2022-04-01 下午3.47.31.png

TruncationMode 枚举值的介绍:

  • head:若 Text 不能完整的显示字符串的内容,在头部开始显示省略号,例 - "...wxyz"
  • tail:若 Text 不能完整的显示字符串的内容,在尾部开始显示省略号,例 - "abcd..."
  • middle:若 Text 不能完整的显示字符串的内容,在中间开始显示省略号,例 - "ab...yz"

默认值为 tail。

需要注意的是:无论你如何截断文本,都会看到文本视图是整齐地位于主视图中心的,这是 SwiftUI 的默认行为。

除非被告知将视图放置在其他位置,否则它都会相对于屏幕中心定位它们。