Ich versuche ein NSTextField
programmgesteuert zu erstellen.
Ich möchte dieses NSTextField
mit dem automatischen Layout verwenden, so dass seine Breite automatisch definiert wird, um die gesamte Zeile anzuzeigen (es gibt nur eine Textzeile).
Das Problem ist, dass textField.intrinsicContentSize
und textField.fittingSize
beide -1 und 0 Werte für die horizontale Koordinate haben, da die Ausgabe des folgenden Codes ist:
%Code%
textField.intrinsicContentSize={-1, 21}
Der Code:
%Vor%Damit wird dem Textfeld durch das automatische Layout eine Breite von Null zugewiesen.
Was soll ich tun, um sinnvolle Werte für die Eigenschaften textField.fittingSize={0, 21}
und fittingSize
des Textfelds zu erhalten, damit sie den Inhalt des Textfelds widerspiegeln?
Eine weitere Möglichkeit, die optimale Breite des Textfelds zu berechnen, ohne fittingSize
zu verwenden, ist der folgende Code (ersetzt die Methode sizeTextFieldWidthToFit von John Sauer):
Sie können festlegen, dass die Priorität von textFieldWidthConstraint niedriger ist als die Priorität einer anderen Ungleichung. Beschränken Sie Ihre Anforderung auf eine minimale Größe von 25.
Ich kann nicht erklären, warum die Breite von intrinsicContentSize von NSTextField -1 ist, aber ich konnte eine basierend auf der Größe von attributedString berechnen. So habe ich das NSTextField erstellt:
%Vor%Und hier sind die Methoden, die die Größe ändern, wenn sich ihr Text ändert:
%Vor%Tags und Links cocoa nstextfield autolayout nstextview