Ich habe versucht, eine mehrzeilige NSTextField
automatisch mit preferredMaxLayoutWidth
Layout zu erstellen. Ich kann nicht herausfinden, warum das nicht funktioniert.Mehrzeiliges NSTextField funktioniert nicht
class ViewController: NSViewController {
override func viewDidLoad() {
super.viewDidLoad()
let textField = NSTextField()
textField.cell!.usesSingleLineMode = false
textField.cell!.wraps = true
textField.cell!.lineBreakMode = .byCharWrapping
view.addSubview(textField)
textField.translatesAutoresizingMaskIntoConstraints = false
NSLayoutConstraint.activate([
textField.topAnchor.constraintEqual(to: view.topAnchor),
textField.leadingAnchor.constraintEqual(to: view.leadingAnchor),
textField.widthAnchor.constraintEqual(toConstant: 20)
])
textField.preferredMaxLayoutWidth = 20
textField.stringValue = "abcdefghijklmnopqrstuvwxyz"
view.needsLayout = true
view.layoutSubtreeIfNeeded()
print("Intrinsic content size: \(textField.intrinsicContentSize)")
print("Fitting size: \(textField.fittingSize)")
}
}
Diese Drucke:
Intrinsic Inhalt Größe: (-1,0, 21,0)
passende Größe: (20,0, 21,0)
(21,0 ist die Größe für eine einzige Zeile.)
Was nicht funktioniert? Es sieht so aus, als ob die Breite so eingestellt ist, dass nur ein Zeichen pro Zeile angezeigt wird. –
@ l'L'Die Breite ist auf 20 Punkte beschränkt. Ich erwarte, dass "NSTextField" eine Höhe zurückgibt, die groß genug ist, um den gesamten Text aufzunehmen. – fumoboy007
Warum also nicht auch eine Beschränkung für 'heightAnchor' verwenden? –