Question

I'am using autolayout with NSSpliView, the setup is as following on the picture

The split view is in a window which can resize, when it resizes, the divider is changing proportional 50:50, how to change this, so that the height of the bottom view stays and the top view gets resized (but no more than 124px) but still have the freedom also to change it manually by dragging the split?

enter image description here

Was it helpful?

Solution

So just to recap you have three requirements,

  1. Bottom view stays the same size on resize

    Reduce the holding priority if the top view (select the NSSplitView to get the correct inspector)

    Holding

  2. Top view cannot resize more than 124px

    Add a inequality constraint which sets the height of the view to less than or equal to 124px. You can do this in IB. It will also be a good idea to create a IBOutlet for this constraint in your custom view of controller class for the next step...

  3. When the divider is moved the top view should be able to get smaller than 124px.

    I not entirely sure but checkout the NSSplitView delegate method such as splitView:resizeSubviewsWithOldSize: or splitViewDidResizeSubviews:. When you resize with the divider the delegate method should override the height constraint to be the current resized size. So something like the following in the delegate method

    self.heightConstant.constant = NSHeight(topView)

    Or you could just remove the constraint and re-add it later when needed.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top