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
> 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