在Mac应用中使用SwiftUI如何强制文本框显示最少5行?
SwiftUI垂直TextField强制显示最少5行的解决方案
你的代码里lineLimit(5, reservesSpace: true)的用法有误,这个方法的第一个参数是最大行数,并非最少行数。要实现至少显示5行的效果,需要使用带min和max参数的重载方法,具体修改如下:
var body: some View { VStack { TextField("Title String", text: $viewModel.currentTitle) TextField("Text Template", text: $viewModel.currentCode, axis: .vertical) .lineLimit(min: 5, max: .infinity) // 指定最少5行,最大行数不限 .textFieldStyle(.roundedBorder) } .padding() }
如果设置后仍未达到预期,可以额外添加frame来确保输入框有足够的最小高度(数值可根据字体大小调整):
TextField("Text Template", text: $viewModel.currentCode, axis: .vertical) .lineLimit(min: 5, max: .infinity) .frame(minHeight: 120) .textFieldStyle(.roundedBorder)
注意事项:
- 该多行TextField特性需要iOS 16.0+、macOS 13.0+及以上系统版本支持
- 若需兼容更低版本,推荐使用
TextEditor组件,它原生支持多行显示并可轻松设置最小高度
内容的提问来源于stack exchange,提问作者Mercutio
相关产品推荐
相关产品推荐

