SplitViews/CollapseWindowController.m
/* |
Copyright (C) 2015 Apple Inc. All Rights Reserved. |
See LICENSE.txt for this sample’s licensing information |
Abstract: |
The NSWindowController subclass managing the collapsible split views. |
*/ |
#import "CollapseWindowController.h" |
#define kMinContrainValue 100.0f |
@implementation CollapseWindowController |
#pragma mark - NSSplitViewDelegate methods |
// ------------------------------------------------------------------------------- |
// canCollapseSubview: |
// |
// This delegate allows the collapsing of the first and last subview. |
// ------------------------------------------------------------------------------- |
- (BOOL)splitView:(NSSplitView *)splitView canCollapseSubview:(NSView *)subview |
{ |
BOOL canCollapseSubview = NO; |
NSArray *splitViewSubviews = splitView.subviews; |
NSUInteger splitViewSubviewCount = splitViewSubviews.count; |
if (subview == splitViewSubviews[0] || subview == splitViewSubviews[(splitViewSubviewCount - 1)]) |
{ |
canCollapseSubview = YES; |
} |
return canCollapseSubview; |
} |
// ------------------------------------------------------------------------------- |
// shouldCollapseSubview:subView:dividerIndex |
// |
// This delegate allows the collapsing of the first and last subview. |
// ------------------------------------------------------------------------------- |
- (BOOL)splitView:(NSSplitView *)splitView shouldCollapseSubview:(NSView *)subview forDoubleClickOnDividerAtIndex:(NSInteger)dividerIndex |
{ |
// yes, if you can collapse you should collapse it |
return YES; |
} |
// ------------------------------------------------------------------------------- |
// constrainMinCoordinate:proposedCoordinate:index |
// ------------------------------------------------------------------------------- |
- (CGFloat)splitView:(NSSplitView *)splitView constrainMinCoordinate:(CGFloat)proposedCoordinate ofSubviewAt:(NSInteger)index |
{ |
CGFloat constrainedCoordinate = proposedCoordinate; |
if (index == 0) |
{ |
constrainedCoordinate = proposedCoordinate + kMinContrainValue; |
} |
return constrainedCoordinate; |
} |
// ------------------------------------------------------------------------------- |
// constrainMaxCoordinate:proposedCoordinate:proposedCoordinate:index |
// ------------------------------------------------------------------------------- |
- (CGFloat)splitView:(NSSplitView *)splitView constrainMaxCoordinate:(CGFloat)proposedCoordinate ofSubviewAt:(NSInteger)index |
{ |
CGFloat constrainedCoordinate = proposedCoordinate; |
if (index == (splitView.subviews.count - 2)) |
{ |
constrainedCoordinate = proposedCoordinate - kMinContrainValue; |
} |
return constrainedCoordinate; |
} |
@end |
Copyright © 2015 Apple Inc. All Rights Reserved. Terms of Use | Privacy Policy | Updated: 2015-12-03