How to expand and collapse NSSplitView subviews with animation?

前端 未结 5 2104
终归单人心
终归单人心 2020-12-23 17:50

Is it possible to animate the collapsing and expanding of NSSplitView subviews? (I am aware of the availability of alternative classes, but would prefer using NSSplitView ov

5条回答
  •  眼角桃花
    2020-12-23 18:31

    Here's a simpler method:

    http://www.cocoabuilder.com/archive/cocoa/304317-animating-nssplitpane-position.html

    (Link above dead, new link here.)

    Which says create a category on NSSplitView as follows, and then animate with

    [[splitView animator] setSplitPosition:pos];
    

    Works for me.

    Category:

    @implementation NSSplitView (Animation)
    
    + (id)defaultAnimationForKey:(NSString *)key
    {
        if ([key isEqualToString:@"splitPosition"])
        {
            CAAnimation* anim = [CABasicAnimation animation];
            anim.duration = 0.3;
            return anim;
        }
        else
        {
            return [super defaultAnimationForKey:key];
        }
    }
    
    - (void)setSplitPosition:(CGFloat)position
    {
        [self setPosition:position ofDividerAtIndex:0];
    }
    
    - (CGFloat)splitPosition
    {
        NSRect frame = [[[self subviews] objectAtIndex:0] frame];
    
        if([self isVertical])
            return NSMaxX(frame);
        else
            return NSMaxY(frame);
    }
    
    @end
    

提交回复
热议问题