Swift 4中\n换行失效求助:UITextField内如何实现换行
解决Swift 4中UITextField换行符(\n)不生效的问题
嘿,这个问题我之前也碰到过!其实核心原因很简单:UITextField是苹果设计的单行文本输入/显示控件,默认情况下它会忽略所有换行符,只渲染单行内容,所以你写的\n自然不会生效啦。
下面给你两个解决方案,按需选择:
方案一:改用UITextView(推荐)
UITextView才是专门用来处理多行文本的控件,完全支持换行符,而且交互逻辑更符合多行文本的场景。修改后的代码如下:
var welcomeText: UITextView = { let textView = UITextView() textView.layer.cornerRadius = 25 textView.text = "Hello, are you \n Im doing good! 🙃" textView.textColor = .white // 如果不需要用户编辑文本,加上这行 textView.isEditable = false // 去掉默认的滚动指示器(如果不需要的话) textView.showsVerticalScrollIndicator = false // 设置内边距让文本不贴着圆角边缘,提升视觉效果 textView.textContainerInset = UIEdgeInsets(top: 10, left: 15, bottom: 10, right: 15) return textView }()
方案二:强行让UITextField支持多行(不推荐)
如果你因为某些原因必须用UITextField,可以通过设置两个属性来开启多行模式,但这种方式可能会带来一些交互上的小问题(比如光标行为、输入体验等):
var welcomeText: UITextField = { let textField = UITextField() textField.layer.cornerRadius = 25 textField.text = "Hello, are you \n Im doing good! 🙃" textField.textColor = .white // 设置为0表示自动根据内容行数调整显示 textField.numberOfLines = 0 // 关闭滚动,让文本自动换行显示(如果需要滚动可以设为true) textField.isScrollEnabled = false // 记得给textField设置足够大的frame或者用AutoLayout约束,确保能放下多行内容 return textField }()
提醒一下:如果用方案二,一定要确保textField的尺寸足够容纳多行文本,否则内容会被截断哦。
内容的提问来源于stack exchange,提问作者Box House
相关产品推荐
相关产品推荐

