Search code examples
cocoatransparencydrawrectnsscrollviewnsscroller

NSScrollview and transparent, overlay NSScroller subclasses


I have made a slick NSScroller subclass, but can't figure out how to make it overlay on top of the NSScrollView instead of pushing the documentView aside.

enter image description here

Here you can see the background of a NSCollectionView that I wish to make 100% wide, and have the scroller sit along top. Currently, I have to set a white background to the scroller because drawing with a clearColor is not showing as transparent, but as black.

Am I going about this the wrong way? Am I missing something obvious here? How can I achieve the behavior of a transparent-tracked NSScroller that sits atop a NSScrollView's contents?


Solution

  • I was able to get the positioning by implementing tile in the subclass OF NSSCROLLVIEW

    - (void)tile {
        [super tile];
        [[self contentView] setFrame:[self bounds]];
    }
    

    And it turns out that trying to draw clear color was the problem to begin with. In the scroller subclass, I just omitted any drawing that had to do with the slider track completely BY OVERRIDING DRAWRECT: OF THE NSSCROLLER SUBCLASS, LIKE SO:

    - (void)drawRect:(NSRect)dirtyRect
    {
        [self drawKnob];
    }
    

    enter image description here