Re: problem getting CALayer to draw an image
Re: problem getting CALayer to draw an image
- Subject: Re: problem getting CALayer to draw an image
- From: David Duncan <email@hidden>
- Date: Thu, 05 Apr 2018 11:05:24 -0700
> On Apr 5, 2018, at 10:53 AM, James Walker <email@hidden> wrote:
>
> I have a generic NSView that contains some subviews, and I'd like to add a
> background image. I tried code like this:
>
> NSImage* backgroundImage = [NSImage imageNamed: @"blueprint controls.png"];
> CALayer* holderLayer = [CALayer layer];
> _throttleHolder.layer = holderLayer;
> _throttleHolder.wantsLayer = YES;
> holderLayer.zPosition = 4.0f;
> holderLayer.contents = backgroundImage;
> holderLayer.hidden = NO;
> holderLayer.bounds = NSRectToCGRect( _throttleHolder.bounds );
> [holderLayer setNeedsDisplay];
You don’t need to call -setNeedsDisplay here, and it may be what is destroying
your content (when a layer displays, its stores the result of drawing in
contents – you don’t want that since you are setting the contents directly).
Overall however, I think AppKit has an NSView method (something like
updateLayer I think) that you want to override to do this. The layer’s geometry
should already be set by AppKit and you should not modify it if I recall
correctly. Geometry includes things such as center/bounds/frame and hidden.
>
> But no background image shows up. On the other hand, if I add the line
>
> holderLayer.backgroundColor = CGColorGetConstantColor( kCGColorWhite );
>
> then I get a white background, so apparently the layer is there and capable
> of drawing. And yes, I have made sure that backgroundImage is not nil.
>
> At this point, it probably would have been quicker to just go ahead and
> subclass NSView, but I'm curious about what dumb mistake I'm making.
> _______________________________________________
>
> 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
--
David Duncan
_______________________________________________
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