(iphone) adding a shadow to layer -


i'd add shadow uiimageview has image layers.

i've tried self.layer.shadowoffset/shadowopacity route, it's slow..
when want add shadow, call addshadowlayerwithoffset method below expected call drawrect , add shadow..
drawrect isn't getting called.

what missing here?

- (void)drawrect:(cgrect)rect {     syslog(log_debug, "in drawrect, isshadowed: %d", isshadowed);     if (isshadowed == true)     {         cgcontextref currentcontext = uigraphicsgetcurrentcontext();         cgcontextsavegstate(currentcontext);         cgcontextsetshadow(currentcontext, cgsizemake(100, 100), 3);         [super drawrect: rect];         cgcontextrestoregstate(currentcontext);     }     else         [super drawrect: rect]; }  - (void) addshadowlayerwithoffset: (int)offset { //  self.layer.shadowoffset = cgsizemake(offset,offset);                                                                                                                                                                                                                       //  self.layer.shadowopacity = 0.7f;                                                                                                                                                                                                                                           //  self.layer.shadowradius = 5.0;                                                                                                                                                                                                                                                 isshadowed = true;     [self setneedsdisplay]; } 
  • edit

ok, got drawlayer being called. needed [self.layer setneedsdisplay] not [self.layer setneedsplay] self uiimageview subclass.

but shadow not being drawn, in fact image(original layer) not shown either.
should change?

- (void) drawlayer: (calayer*) layer incontext: (cgcontextref)context {     syslog(log_debug, "in drawlayer, isshadowed: %d", isshadowed);     if(isshadowed == true)     {         cgcontextsavegstate(context);         cgcontextsetshadow(context, cgsizemake(10, 10), 3);         [super drawlayer: layer incontext: context];         cgcontextrestoregstate(context);     }     else         [super drawlayer: layer incontext: context]; } 

you calling:

[super drawrect: rect]; 

but apple says:

you should never call method directly yourself. invalidate part of view, , cause portion redrawn, call setneedsdisplay or setneedsdisplayinrect: method instead.

instead of drawrect, ever tried drawlayer?

-(void)drawlayer:(calayer *)layer incontext:(cgcontextref)context 

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? -