Text的lineLimit
众所周知,在iOS开发中,UILabel(UIKit中)或Text(SwiftUI中)是可以显示多行文本的,如果想限制文本行数的话可以用lineLimit
,这个在SwiftUI1.0的时候已经有了,那时候lineLimit
里面只能放一个整数参数,现在里面可以放一个范围:
struct ContentView: View {
var body: some View {
Text("雷军,工程师、企业家,小米集团创始人。1969年出生于湖北仙桃,毕业于武汉大学计算机系,武汉大学荣誉教授。1992年参与创办金山软件,1998年出任金山软件首席执行官。2010年4月创办小米,创立9年即成为最年轻的世界500强企业。他提出“顺势而为”的商业思考,并总结了广为人知的“小米方法论”七字诀:专注、极致、口碑、快。")
.padding(30)
.background(Color.yellow)
.lineLimit(3...5) //表明最少显示3行(没有3行也显示3行),最多显示5行(多出的部分被裁掉)
}
}
效果:
TextField的lineLimit
struct ContentView: View {
@State var inputText = ""
var body: some View {
Form {
Section("小米创始人") {
TextField("请输入答案及个人简介", text: $inputText, axis: .vertical)
.lineLimit(3...5)
}
}
}
}
效果:
一开始没有输入东西或者输入的东西小于3行的时候,都会显示3行。
等输入的东西超过5行的时候和上面的Text不一样,不是被裁掉,而是变成scroll状态,并且最后一行只显示一半,提示用户可以scroll:
当然这个特性仅限于垂直方向的TextField,所以上面的axis需指定为vertical,这一点可参照lineLimit文档。