【Lebus的iOS开发教程】iOS16+SwiftUI4.0新功能实操演示-lineLimit

212 阅读1分钟

Text的lineLimit

众所周知,在iOS开发中,UILabel(UIKit中)或Text(SwiftUI中)是可以显示多行文本的,如果想限制文本行数的话可以用lineLimit,这个在SwiftUI1.0的时候已经有了,那时候lineLimit里面只能放一个整数参数,现在里面可以放一个范围:

struct ContentView: View {
    var body: some View {
        Text("雷军,工程师、企业家,小米集团创始人。1969年出生于湖北仙桃,毕业于武汉大学计算机系,武汉大学荣誉教授。1992年参与创办金山软件,1998年出任金山软件首席执行官。20104月创办小米,创立9年即成为最年轻的世界500强企业。他提出“顺势而为”的商业思考,并总结了广为人知的“小米方法论”七字诀:专注、极致、口碑、快。")
            .padding(30)
            .background(Color.yellow)
            .lineLimit(3...5) //表明最少显示3行(没有3行也显示3行),最多显示5行(多出的部分被裁掉)
    }
}

效果:

image.png

TextField的lineLimit

struct ContentView: View {
    @State var inputText = ""
    var body: some View {
        Form {
            Section("小米创始人") {
                TextField("请输入答案及个人简介", text: $inputText, axis: .vertical)
                    .lineLimit(3...5)
            }
        }
    }
}

效果:

image.png

一开始没有输入东西或者输入的东西小于3行的时候,都会显示3行。

等输入的东西超过5行的时候和上面的Text不一样,不是被裁掉,而是变成scroll状态,并且最后一行只显示一半,提示用户可以scroll:

image.png

当然这个特性仅限于垂直方向的TextField,所以上面的axis需指定为vertical,这一点可参照lineLimit文档。