NSView Subklasse und fehlerhafte bounds...Hillegass ch. 17 (etwas lang)

torbenH

Mitglied
Thread Starter
Dabei seit
28.01.2006
Beiträge
21
Reaktionspunkte
0
Hallo zusammen,

ich arbeite gerade das Hillegass Buch durch. Im Augenblick Kapitel 17, in dem eigene Views eingeführt werden.
Subclass von NSView ist erstellt, im IB einen Custom-View als einziges Element in ein Fenster (NSWindow) gezogen, Klasse angepasst, Autosizing des Views so eingestellt, dass er mit dem Fenster in alle Dimensionen wächst. Ebenfalls Autosizing des Content-Views des NSWindow angepasst.

drawRect: des Views sieht jetzt wie folgt aus:
Code:
- (void)drawRect:(NSRect)rect {
	NSRect bounds = [self bounds];
	NSLog(@"Rect Origin: %d:%d, Size: %f:%f", rect.origin.x, rect.origin.y, rect.size.width, rect.size.height);
	[[NSColor greenColor] set];
	[NSBezierPath fillRect:bounds];
}
Schön und gut, der eigene View wird grün dargestellt. Was mich jetzt nur stört und am weiter arbeiten hindert ist die Tatsache, dass rect.size.width immer(!) 0.0 bleibt. Der Wert soll aber später als Grenze für Zufallszahlen dienen.
Wenn ich das NSWindow in der laufenden Applikation in der Größe ändere, wird immer rect.size.height angepasst.
Lustig ist jetzt: Wenn ich das Fenster breiter ziehe, ändert sich der Wert in rect.size.height, rect.size.width bleibt 0. Immer. Wenn ich das Fenster nach unten vergrößere, ändert sich garnichts.
Kurzer Konsolen-Mitschnitt:
Code:
[Session started at 2009-08-06 22:59:17 +0200.]
2009-08-06 22:59:18.061 ImageFun[3320:10b] Rect Origin: 0:0, Size: 0.000000:440.000000
2009-08-06 22:59:21.125 ImageFun[3320:10b] Rect Origin: 0:0, Size: 0.000000:441.000000
2009-08-06 22:59:21.306 ImageFun[3320:10b] Rect Origin: 0:0, Size: 0.000000:442.000000
2009-08-06 22:59:21.807 ImageFun[3320:10b] Rect Origin: 0:0, Size: 0.000000:443.000000
2009-08-06 22:59:22.408 ImageFun[3320:10b] Rect Origin: 0:0, Size: 0.000000:444.000000
2009-08-06 22:59:22.976 ImageFun[3320:10b] Rect Origin: 0:0, Size: 0.000000:445.000000
2009-08-06 22:59:24.296 ImageFun[3320:10b] Rect Origin: 0:0, Size: 0.000000:446.000000
2009-08-06 22:59:24.731 ImageFun[3320:10b] Rect Origin: 0:0, Size: 0.000000:447.000000
2009-08-06 22:59:25.483 ImageFun[3320:10b] Rect Origin: 0:0, Size: 0.000000:448.000000
Bis dato habe ich das Fenster breiter gezogen. Ab jetzt die Y-Achse:
Code:
2009-08-06 22:59:27.371 ImageFun[3320:10b] Rect Origin: 0:0, Size: 0.000000:448.000000
2009-08-06 22:59:27.838 ImageFun[3320:10b] Rect Origin: 0:0, Size: 0.000000:448.000000
2009-08-06 22:59:28.273 ImageFun[3320:10b] Rect Origin: 0:0, Size: 0.000000:448.000000
2009-08-06 22:59:28.590 ImageFun[3320:10b] Rect Origin: 0:0, Size: 0.000000:448.000000

Ich verstehe die Welt nicht mehr, kann mir jemand einen Tipp geben, wo ich nach meinem Fehler suchen könnte? Ich habe auch schon alles verworfen und neu erstellt. Ich finde auch keinen Tippfehler. Verknüpfungen im IB wären laut Buch noch keine zu erstellen gewesen.
Bugs im Framework würde ich mal eher nicht annehmen...

Ciao...
 
Ok... Also irgendwie... naja. Wenn ich mal darauf geachtet hätte, dass origin.x und origin.y in NSRect auch Floats sind und meine NSLog-Ausgabe entsprechend formatiert hätte, hätte ich mir drei Stunden Fehlersuche ersparen können.
Sorry für die Mühe (des Lesens) :rolleyes:
Pro forma lass' ich den Thread da, er kann aber auch gerne gelöscht werden.
 
Zurück
Oben Unten