2 Stimmen

Seltsames Schriftverhalten auf dem NSTextField

Ich habe programmgesteuert ein NSTextField zu meiner NSView hinzugefügt:

NSTextField *projectLabel = [[NSTextField alloc] initWithFrame:frame];
[projectLabel setStringValue:@"Projektname"];
[projectLabel setBezeled:NO];
[projectLabel setDrawsBackground:NO];
[projectLabel setEditable:NO];
[projectLabel setSelectable:NO];

[projectLabel setFont:[NSFont controlContentFontOfSize:13]];
projectLabel.autoresizingMask = NSViewMaxXMargin | NSViewMinYMargin; 

[self addSubview:projectLabel];
[self setAutoresizesSubviews:NO];

Dieses Feld wurde korrekt hinzugefügt, aber wenn ich die Größe der Ansicht ändere (oder sogar das Fenster auf den zweiten Bildschirm bewege), ändert sich die Schriftart auf dem Feld sehr eigenartig (siehe beigefügtes Bild).

Beim Start vorher
nach Änderung der Größe nachher
Ich weiß nicht, was ich falsch gemacht habe

0 Stimmen

Nicht dass dies helfen wird, aber Sie sollten 0,0 als Größe übergeben, um den Schriftinhalt der Steuerung in der Standardgröße zu erhalten.

1 Stimmen

Weiterhin: Die Schriftart ändert sich überhaupt nicht. Das Eingabefeld unterstreicht den Text doppelt: Es zeichnet den Text mehrmals, jedes Mal über den vorherigen.

0 Stimmen

Du hast absolut recht, ich habe dieses Label jedes Mal auf drawRect gezeichnet, wenn die Größe geändert wird.

1voto

Peter Hosey Punkte 94684

Ich habe dieses Label jedes Mal auf drawRect gezeichnet, wenn sich die Größe ändert.

Also sagst du manuell dem Feld, sich in der drawRect: seines übergeordneten Views anzuzeigen?

Mach das nicht. Es ist eine Unteransicht, also wird es sowieso gesagt, dass es sich in seinem Zug zeichnen soll. Lass das einfach passieren.

0 Stimmen

Theoretisch weiß ich darüber Bescheid. Aber manchmal mache ich dumme Fehler :) Danke für deine Vorschläge.

0 Stimmen

@TomaszWojtkowiak ich stehe auch vor demselben Problem. Kannst du mir sagen, wie man das löst?

0 Stimmen

@SawanCool - die Lösung befindet sich in Peter Hoseys Antwort. Ich habe die Erstellung von NSTextField einfach aus drawRect:.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X