On Jan 9, 2014, at 12:48 PM, Kyle Sluder <k...@ksluder.com> wrote: > On Thu, Jan 9, 2014, at 07:51 AM, Andy Lee wrote: >> As far as I know (see disclaimers), there's no reason you can't implement >> split view delegate methods just because you're using Auto Layout, as >> long as you aren't calling setFrame:. > > Nope. Please see the 10.8 AppKit Release Notes, which enumerate all the > delegate methods which will kick you out of Auto Layout mode: > >> splitView:constrainMinCoordinate:ofSubviewAt: >> splitView:constrainMaxCoordinate:ofSubviewAt: >> splitView:resizeSubviewsWithOldSize: >> splitView:shouldAdjustSizeOfSubview: >> These methods are incompatible with auto layout. You can typically achieve >> their effects and more with auto layout. > > <https://developer.apple.com/library/mac/releasenotes/AppKit/RN-AppKitOlderNotes/>
Right -- that's also mentioned in the thread Michael linked to. > >> I would guess it's perfectly all >> right to implement splitView:constrainSplitPosition:ofSubviewAt:, examine >> the proposedPosition argument, and allow the view's width to be either >> zero or >= the minimum width but not in between. > > This is very much not allowed, and wouldn't have been the correct > approach even before auto layout. You'd think splitView:constrainSplitPosition:ofSubviewAt: would be included in the above list, but it isn't. I tried implementing it and it didn't disable Auto Layout, as, for example, splitView:constrainMinCoordinate:ofSubviewAt: does. So, going by the omission from the docs and from empirical results it seems to me this delegate method is allowed. Maybe it was left off the do-not-use list because there are uses for it that are not easily done with Auto Layout -- for example, the one described in the docs: > For example, if a subview’s height must be a multiple of a certain number, > use this method to return the multiple nearest to proposedPosition. In any case, to collapse the view I did indeed have to fiddle with constraints within the delegate method, which worked, but was ugly and totally unnecessary because: > To achieve this effect, add a mandatory greater-than-or-equal-to width > constraint to the subview you want to be collapsible, and implement > -splitView:canCollapseSubview: to return YES for that subview. Oh, of course -- it's that simple. Thanks. I was worried that the collapsing might cause a conflict with constraints on views inside the collapsed view. But I just tried it and it works, which is exactly what one would hope. The key point is that it *is* okay to implement *certain* split view delegate methods. --Andy _______________________________________________ Cocoa-dev mailing list (Cocoa-dev@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/archive%40mail-archive.com This email sent to arch...@mail-archive.com