cocoa - drawLayer not called when subclassing CALayer -


i have simple calayer subclass (boxlayer) drawlayer method:

- (void)drawlayer:(calayer *)layer incontext:(cgcontextref)ctx {     nslog(@"drawlayer");     nsgraphicscontext *nsgraphicscontext;     nsgraphicscontext = [nsgraphicscontext graphicscontextwithgraphicsport:ctx                                                                    flipped:no];     [nsgraphicscontext savegraphicsstate];     [nsgraphicscontext setcurrentcontext:nsgraphicscontext];      // ...draw content using ns apis...     nspoint origin = { 21,21 };      nsrect rect;     rect.origin = origin;     rect.size.width  = 128;     rect.size.height = 128;      nsbezierpath * path;     path = [nsbezierpath bezierpathwithrect:rect];      [path setlinewidth:4];      [[nscolor whitecolor] set];     [path fill];      [[nscolor graycolor] set];      [path stroke];      [nsgraphicscontext restoregraphicsstate]; }

i have awakefromnib in nsview subclass:

- (void)awakefromnib {     calayer* rootlayer = [calayer layer];     [self setlayer:rootlayer];     [self setwantslayer:yes];      box1 = [calayer layer];     box1.bounds = cgrectmake(0, 0, 70, 30);     box1.position = cgpointmake(80, 80);     box1.cornerradius = 10;     box1.bordercolor = cgcolorcreategenericrgb(255, 0, 0, 1);     box1.borderwidth = 1.5;     [rootlayer addsublayer:box1];      box2 = [boxlayer layer];     [box2 setdelegate:box2];     [box2 setneedsdisplay];     [rootlayer addsublayer:box2]; }

my drawlayer never called though, why not?

thank you

possibly because frame of layer seems equal cgrectzero, os might think it's invisible doesn't need draw it.

on side note, why going complicated way of setting layer's delegate , implementing drawlayer:incontext: instead of using drawincontext: directly?


Comments

Popular posts from this blog

apache - Add omitted ? to URLs -

redirect - bbPress Forum - rewrite to wwww.mysite prohibits login -

php - How can I stop spam on my custom forum/blog? -