• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Re: Problem with CALayer delegate
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Problem with CALayer delegate


  • Subject: Re: Problem with CALayer delegate
  • From: Vinay Prabhu <email@hidden>
  • Date: Sat, 23 Feb 2008 12:03:10 +0530

your code looks fine to me, ideally the delegates should get called.

In my code, I have called the API's,
self setLayer:mainLayer];
[self setWantsLayer:YES];

after the view is initialized, like,
Code in the Controller class:
CustomView* view = [[CustomView alloc] initWithFrame:rect];
[view setUpCALayers];

Code in the view class:
- (void) setUpCALayers
{
	self setLayer:mainLayer];
	[self setWantsLayer:YES];
}
- (void)updateLayers
{
	[mainLayer setNeedsDisplay];
}

and it is perfectly working fine.
I am not able to explain why delegates are not getting called in your code,
but you can try moving the setLayer and setWantsLayer outside the init.


-Vinay

On Feb 23, 2008, at 11:18 AM, Francois-Jean De Brienne wrote:

thanks, but this did not help. I'm still not getting drawLayer: inContext to be called.



On 23-Feb-08, at 12:41 AM, Vinay Prabhu wrote:

Instead of creating CALayer object using,
mainLayer = [[[CALayer alloc] init] retain];

try creating the CALayer this way,
mainLayer = [[CALayer layer] retain];

-Vinay

On Feb 23, 2008, at 10:50 AM, Matt Long wrote:

You could try creating your own CALayer derived class that overrides

- (void)drawInContext:(CGContextRef)ctx

drawLayer simply allows your delegate to override that same method externally.

-Matt


On Feb 22, 2008, at 9:52 PM, Francois-Jean De Brienne wrote:

Hello everyone,

I'm a very new cocoa developer (I switched two months ago) but an experienced (15+ years) developer.

I'm struggling trying to get a CALayer delegate method, specifically drawLayer being called. I am trying to host the CALayer inside an NSView that would be the delegate for the CALayer.

The CALayer is an attribute of my custom NSView called mainLayer.

Here is the initWithFrame method for my custom NSView:

-(id) initWithFrame: (NSRect) frameRect
{
	self = [super initWithFrame:frameRect];

	if (self)
	{
		mainLayer = [[[CALayer alloc] init] retain];

		[mainLayer setDelegate:self];
		[self setLayer:mainLayer];
		[self setWantsLayer:YES];
	}

	return self;
}

Then, the custom NSView declares a drawLayer method as such (that I'd want to be called from my mainLayer):

-(void)drawLayer:(CALayer*) layer inContext:(CGContextRef)ctx
{
	NSLog (@"Entered drawLayer");
}

Now, whenever I send the setNeedsDisplay message to mainLayer, I assume that drawLayer would be called. It is not.

drawLayer is also declared in the .h for the custom NSView (if that makes any difference).

If I override and define drawRect for my NSView, I can verify that it does enter that method:

- (void)drawRect:(NSRect)rect
{
	NSLog (@"Entered drawRect");
}


What am I doing wrong? _______________________________________________

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

_______________________________________________

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





_______________________________________________

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


References: 
 >Problem with CALayer delegate (From: Francois-Jean De Brienne <email@hidden>)
 >Re: Problem with CALayer delegate (From: Matt Long <email@hidden>)
 >Re: Problem with CALayer delegate (From: Vinay Prabhu <email@hidden>)
 >Re: Problem with CALayer delegate (From: Francois-Jean De Brienne <email@hidden>)

  • Prev by Date: Re: Problem with CALayer delegate
  • Next by Date: Re: Problem with CALayer delegate
  • Previous by thread: Re: Problem with CALayer delegate
  • Next by thread: Re: Problem with CALayer delegate
  • Index(es):
    • Date
    • Thread