Nview setWantLayer method breaks my custom button cell
Nview setWantLayer method breaks my custom button cell
- Subject: Nview setWantLayer method breaks my custom button cell
- From: Gustavo Pizano <email@hidden>
- Date: Thu, 18 Mar 2010 09:21:31 +0100
Hello.
I have a Custom Button Cell, and its corresponding CustomButton, When I use these component in any other cell they work perfect, when I click the button, my NSButonCell's overrode method
- (void)highlight:(BOOL)flag withFrame:(NSRect)cellFrame inView:(NSView *)controlView{
makes the drawing of the button when the user clicks it, so it change to the proper theme color.
Now I set up a view with a layer from a NSTextField label, and added a bloom animation like these. taken form apple docs, and then I set the view to [self setWantLayer:YES];
CIFilter * filter = [CIFilter filterWithName:@"CIBloom"];
[filter setDefaults];
[filter setValue:[NSNumber numberWithFloat:3.0f] forKey:@"inputRadius"];
[filter setName:@"pulseFilter"];
[modTitleLayer setFilters:[NSArray arrayWithObjects:filter,nil]];
// The selectionLayer shows a subtle pulse as it
// is displayed. This section of the code create the pulse animation
// setting the filters.pulsefilter.inputintensity to range from 0 to 2.
// This will happen every second, autoreverse, and repeat forever
CABasicAnimation* pulseAnimation = [CABasicAnimation animation];
pulseAnimation.keyPath = @"filters.pulseFilter.inputIntensity";
pulseAnimation.fromValue = [NSNumber numberWithFloat: 0.0];
pulseAnimation.toValue = [NSNumber numberWithFloat: 1.0];
pulseAnimation.duration = 1.0;
pulseAnimation.repeatCount = 1e100f;
pulseAnimation.autoreverses = YES;
pulseAnimation.timingFunction = [CAMediaTimingFunction functionWithName:
kCAMediaTimingFunctionEaseInEaseOut];
[modTitleLayer addAnimation:pulseAnimation forKey:@"pulseAnimation"];
But my highlight method does no custom drawing, actually its being called, but it does nothing.
any ideas what might be happening? maybe something missing in the higlighl method?
this is what Im doing there: Using a gloss drawing thanks for Cocoa with love and Mat Gallagher
if(flag){
NSGraphicsContext *graphicsContext = [NSGraphicsContext currentContext];
[graphicsContext saveGraphicsState];
NSBezierPath * path = [NSBezierPath bezierPathWithRoundedRect:NSInsetRect(cellFrame,1.0, 1.0) xRadius:10.0 yRadius:10.0];
[path addClip];
DrawGlossGradient(
[graphicsContext graphicsPort],
[NSColor colorWithCalibratedRed:0.0 green:0.1522 blue:0.4130 alpha:1.0],
cellFrame);
//[self setBackgroundColor:[NSColor colorWithCalibratedRed:(CGFloat)0.3 green:(CGFloat)0.3 blue:(CGFloat)0.3 alpha:(CGFloat)0.3]];
//[_higLightGradient drawInBezierPath:path relativeCenterPosition:NSZeroPoint];
//[_higLightGradient drawInBezierPath:path angle:90.0];
[graphicsContext restoreGraphicsState];
if(_fontMask == NSBoldFontMask){
// cellFrame.origin.y += 5.0f; //This is the Bold font mask value
}
[super drawWithFrame:cellFrame inView:controlView];
}
else {
[self setBackgroundColor:nil];
}
if after setting up the animation I place [self setWantLayer:NO] the highlight method draws the color of the button when pressed.
Thanks in advance
Gustavo Pizano
_______________________________________________
Cocoa-dev mailing list (email@hidden)
Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden