NSScroller in layer backed view

38 views
Skip to first unread message

Ryan Joseph

unread,
Apr 3, 2012, 3:47:02 AM4/3/12
to coco...@lists.apple.com
I've just started using CoreAnimation for fading views and simple things like that but now I've run across a problem with NSScroller.

In a view which is layer backed (setWantsLayer is on) I have a NSScrollView with a custom NSScroller subclass which performs drawing in drawRect:. When the root views setWantsLayer is on the drawRect: method of the NSScroller subclass is never called. The docs did say drawRect: will not be invoked in layer backed views but I'm confused because another NSView subclass in the same layer backed view is getting drawRect: invoked.

Either way, from what I know about CoreAnimation I probably need to make a CALayer to replace the layer which (presumably) NSScroller is using since drawRect: is not being invoked. However, making a new CALayer (setting it to the NSScroller with setLayer) and overriding drawInContext: is not replacing the original NSScroller drawing.

Does anyone know how I can acheive custom drawing of the NSScroller in the layer backed view?

Thanks for any ideas you may have.

Regards,
Ryan Joseph
thealchemistguild.com


_______________________________________________

Cocoa-dev mailing list (Coco...@lists.apple.com)

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:
https://lists.apple.com/mailman/options/cocoa-dev/cocoa-dev-garchive-98506%40googlegroups.com

This email sent to cocoa-dev-ga...@googlegroups.com

jona...@mugginsoft.com

unread,
Apr 3, 2012, 8:41:54 AM4/3/12
to coco...@lists.apple.com

On 3 Apr 2012, at 08:47, Ryan Joseph wrote:

> I've just started using CoreAnimation for fading views and simple things like that but now I've run across a problem with NSScroller.
>
> In a view which is layer backed (setWantsLayer is on) I have a NSScrollView with a custom NSScroller subclass which performs drawing in drawRect:. When the root views setWantsLayer is on the drawRect: method of the NSScroller subclass is never called. The docs did say drawRect: will not be invoked in layer backed views but I'm confused because another NSView subclass in the same layer backed view is getting drawRect: invoked.

Are you sure that you haven't set any layers explicitly?
-drawRect should be called on all subviews when -wantsLayer is true.
When you create a layer hosting view (that is, assign a layer directly to the view) then -drawRect: will not be called.

Regards

Jonathan Mitchell
Mugginsoft LLP

Reply all
Reply to author
Forward
0 new messages