Hallo,
ich habe ein NSTextFieldCell Subclass, den ich als DataCell ein einer NSTableColumn nutze. Die Column ist in einem NSOutlineView.
Beim Ändern der Breite des OutlineViews ergibt sich folgendes:
tinyurl.com/3dh29e (QuickTime Movie)
Die Cell wird scheinbar nur beim Loslassen des SplitViews zum Neuzeichnen angeregt.
Auffällig ist, dass dies bei der selektierten Reihe nicht geschieht. Ich dachte zunächst daran, dass eventuell der Hintergrund nicht neu gezeichnet wird - habe ich aber ausgeschlossen.
Hier mal die drawWithFrame Methode (man beachte: nicht optimiert und alles andere als sauber - allerdings vom Prinzip her das, was ich möchte:
Alles anzeigen
ich habe ein NSTextFieldCell Subclass, den ich als DataCell ein einer NSTableColumn nutze. Die Column ist in einem NSOutlineView.
Beim Ändern der Breite des OutlineViews ergibt sich folgendes:
tinyurl.com/3dh29e (QuickTime Movie)
Die Cell wird scheinbar nur beim Loslassen des SplitViews zum Neuzeichnen angeregt.
Auffällig ist, dass dies bei der selektierten Reihe nicht geschieht. Ich dachte zunächst daran, dass eventuell der Hintergrund nicht neu gezeichnet wird - habe ich aber ausgeschlossen.
Hier mal die drawWithFrame Methode (man beachte: nicht optimiert und alles andere als sauber - allerdings vom Prinzip her das, was ich möchte:
Quellcode
- - (void)drawWithFrame:(NSRect)cellFrame inView:(NSView *)controlView {
- [super drawWithFrame:NSInsetRect(cellFrame, NSHeight(cellFrame), 0.0) inView:controlView];
- [[self icon] setScalesWhenResized:YES];
- [[self icon] setSize:NSMakeSize(NSHeight(cellFrame), NSHeight(cellFrame))];
- [[self icon] setFlipped:YES];
- [[self icon] drawInRect:NSMakeRect(NSMinX(cellFrame), NSMinY(cellFrame), NSHeight(cellFrame), NSHeight(cellFrame)) fromRect:NSZeroRect operation:NSCompositeSourceOver fraction:1.0];
- NSAttributedString *countString = [[[NSAttributedString alloc] initWithString: [[self count] stringValue] attributes:[NSDictionary dictionaryWithObject:[NSColor whiteColor] forKey:NSForegroundColorAttributeName]] autorelease];
- NSSize countRectSize = [countString size];
- countRectSize.width += 15.0;
- NSPoint countRectOrigin = NSMakePoint(NSMaxX(cellFrame)-countRectSize.width, NSMinY(cellFrame)+(countRectSize.height/2.0));
- NSRect countRect = NSMakeRect(countRectOrigin.x, countRectOrigin.y, countRectSize.width, countRectSize.height);
- NSBezierPath *countBezierPath = [NSBezierPath bezierPathWithRoundedRect:countRect xRadius:5 yRadius:5];
- [[NSColor lightGrayColor] setFill];
- [countBezierPath fill];
- [countString drawAtPoint:NSMakePoint(countRectOrigin.x + 15.0/2, countRectOrigin.y)];
- }
Die Objective-Cloud ist fertig wenn sie fertig ist. Beta heißt Beta.
Objective-C und Cocoa Band 2: Fortgeschrittene
Cocoa/Objective-C Seminare von [co coa:ding].
Objective-C und Cocoa Band 2: Fortgeschrittene
Cocoa/Objective-C Seminare von [co coa:ding].
Es funktioniert. Und ich suche wie verrückt in meinem Cell Code.