Re: NSSplitView parallel motion
Re: NSSplitView parallel motion
- Subject: Re: NSSplitView parallel motion
- From: Luther Baker <email@hidden>
- Date: Sun, 09 Nov 2014 10:22:39 -0600
FWIW ... achieved most of this by nesting split views and leveraging
autolayout constraints and priorities, almost no delegate code.
I'm still not sure how Mail pulls off the disappearing Source animation
though :-)
Thanks,
-Luther
On Sat, Nov 8, 2014 at 2:58 PM, Luther Baker <email@hidden> wrote:
> Is there a "conventional way" to implement parallel divider bar motion in
> an NSSplitView?
>
> While resizing a window, I get the general behavior I want by setting the
> holding properties of 3 view split view to 200, 250, 100 respectfully.
> While randomly resizing the view, the 3rd view collapses first, the first
> view follows leaving the 2nd view intact for the most part.
>
> But how to do this while dragging dividers around? Holding priorities
> don't work there and as soon as I start implementing split view delegate
> methods, the holding priorities start to not hold true.
>
> That said, I've tried doing this via delegate methods and gotten pretty
> far until the parallel movement thing (If you make the 1st view bigger, I
> want the 2nd view to move over and shrink the 3rd view) but when I try to
> use something like setPosition:maxXOfView0+300 ofDividerAtIndex:1 from
> within the splitView:constraintSplitView:ofSubviewAt - I get some sort of
> loopback effect and the first view jumps way up in size and things start
> flickering.
>
> - (CGFloat)splitView:(NSSplitView *)splitView
>
> constrainSplitPosition:(CGFloat)proposedPosition
>
> ofSubviewAt:(NSInteger)dividerIndex {
>
> if (dividerIndex == 0) {
>
> NSRect rect = _sourceContainerView.frame;
>
> CGFloat maxX = NSMaxX(rect);
>
> CGFloat position = maxX + 300;
>
> [splitView setPosition:position ofDividerAtIndex:1];
>
> }
>
> return proposedPosition;
>
> }
>
> Do I need to wait for something like splitViewDidResizeSubviews: and then
> manually move the divider bar or change the view's frame size?
>
> Also, I'm having pretty good luck simulating a "collapse" by simply
> setting the divider to 0 for something like the first view - but most of
> the online tutorials actually animate the view's frame to a size of 0.
> Which way is more "correct"? I don't know if I can animate the approach
> that directly sets the position of the divider bar.
>
> Finally then, Mail has an altogether different, neat effect when you
> collapse the first or Source view. If you notice, the second and third
> views appear to simply slide over the Source view. Maybe the Source view is
> getting smaller and auto layout is setup such that the labels don't shrink
> but it looks more like the 2nd and 3rd view are simply sliding over-on top
> of the Source view. And yes, the 2nd view isn't getting bigger, it is the
> 3rd view that is getting the extra space.
>
> So, manual window resizing, dragging dividers around ... and programmatic
> buttons - all acting generally the same. In general, all resizing is done
> in the 3rd view ... and collapsing the 1st view has a special effect to it.
>
> Thanks in advance for any suggestions,
> -Luther
>
>
>
_______________________________________________
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