• 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 getting CALayer to draw an image
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

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

  • Follow-Ups:
    • Re: problem getting CALayer to draw an image
      • From: James Walker <email@hidden>
    • Re: problem getting CALayer to draw an image (repost)
      • From: James Walker <email@hidden>
    • Re: problem getting CALayer to draw an image
      • From: James Walker <email@hidden>
    • Re: problem getting CALayer to draw an image
      • From: James Walker <email@hidden>
References: 
 >problem getting CALayer to draw an image (From: James Walker <email@hidden>)

  • Prev by Date: Re: problem getting CALayer to draw an image
  • Next by Date: Re: Avoiding link conflicts with a static library
  • Previous by thread: Re: problem getting CALayer to draw an image
  • Next by thread: Re: problem getting CALayer to draw an image
  • Index(es):
    • Date
    • Thread