NSTextField width und autolayout

8

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?

    
Ben-Uri 01.02.2013, 09:28
quelle

2 Antworten

4

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):

%Vor%

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.

    
Ben-Uri 07.02.2013, 20:04
quelle
2

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%     
John Sauer 07.02.2013 18:58
quelle