文本视图在屏幕上显示静态文本,相当于UIKit中的UILabel
。在最基本的方面,它们看起来像这样:
Text("Hello World")
在内容视图的预览窗口中,您可能会看到“自动预览更新暂停”——继续按“恢复”,让Swift开始构建您的代码,并向您显示其外观的实时预览。
提示:您可以按Opt+Cmd+P随时恢复这些预览。
默认情况下,文本视图根据需要在多行中进行包装,但如果您更喜欢限制他们可以使用的行数,您应该添加lineLimit
修饰符,如下图:
Text("This is some longer text that is limited to three lines maximum, so anything more than that will cause the text to clip.")
.lineLimit(3)
.frame(width: 200)
您还可以提供行限制范围,而不是特定值——您可能希望允许3到6之间的任何范围,例如:
Text("This is some longer text that is limited to a specific range of lines, so anything more than six lines will cause the text to clip.")
.lineLimit(3...6)
.frame(width: 200)
如果您需要确切的行限制——意思是“此文本应该正好有两行高度,不能多也不能少”,您应该使用reserveSpace参数,如下:
Text("This is always two lines")
.lineLimit(2, reservesSpace: true)
这并不意味着文本会以某种方式被拉伸到两行,只是文本视图的大小将大小为两行,无论其内容如何。当您需要精确的行数时,这种方法特别有用——例如,在网格和其他布局中,您想要漂亮且均匀的间距。
如果您在某些文本上设置行限制,然后为其提供一个太长而不适合可用空间的字符串,SwiftUI将截断文本,使其以“...”结尾。
您可以调整SwiftUI截断文本的方式:默认是从末尾删除文本,并在那里显示省略号,但您也可以将省略号放在中间或开头,这取决于字符串的各个部分的重要性。
例如,这会截断你中间的文本:
Text("This is an extremely long string of text that will never fit even the widest of iOS devices even if the user has their Dynamic Type setting as small as is possible, so in theory it should definitely demonstrate truncationMode().")
.lineLimit(1)
.truncationMode(.middle)
无论您如何截断文本,您都会看到文本视图在主视图中整齐地居中。这是SwiftUI的默认行为:除非它被告知将视图定位在其他地方,否则它会将它们相对于屏幕中心定位。
[本文翻译自hackingwithswift,点击链接阅读原文]
评论区