在macOS开发中,NSTextField
默认情况下不支持自动换行。要让 NSTextField
在可变行高表中换行,你需要进行一些额外的设置和编码。以下是详细的步骤和示例代码:
NSTextField
的 wraps
属性为 true
,使其支持自动换行。NSTextFieldDelegate
方法来动态计算并调整文本框的高度。import Cocoa
class ViewController: NSViewController, NSTextFieldDelegate {
@IBOutlet weak var textField: NSTextField!
override func viewDidLoad() {
super.viewDidLoad()
// 启用自动换行
textField.lineBreakMode = .byWordWrapping
textField.usesSingleLineMode = false
// 设置代理
textField.delegate = self
}
// NSTextFieldDelegate 方法
func textDidChange(_ notification: Notification) {
adjustTextFieldHeight()
}
func adjustTextFieldHeight() {
let fixedWidth = textField.frame.size.width
let newSize = textField.sizeThatFits(CGSize(width: fixedWidth, height: CGFloat.greatestFiniteMagnitude))
textField.frame.size = CGSize(width: max(newSize.width, fixedWidth), height: newSize.height)
}
}
.byWordWrapping
表示按单词换行。adjustTextFieldHeight
方法重新计算文本框的高度。NSTextField
的宽度固定,以便正确计算换行后的高度。通过以上步骤和代码,你可以实现一个在可变行高表中自动换行的 NSTextField
。
领取专属 10元无门槛券
手把手带您无忧上云