- Inherits from:
- NSView : NSResponder : NSObject
- Conforms to:
- NSCoding
- (NSResponder)
- NSObject (NSObject)
Declared in:
- AppKit/NSSplitView.h
An NSSplitView object stacks several subviews within one view so that the user can change their relative sizes. By default, the split bars between the views are horizontal, so the views are one on top of the other. To have vertical split bars (so the views are side by side), use the method setVertical:. The rest of this section assumes you have horizontal split bars and gives information on vertical split bars in parentheses.
The NSSplitView resizes its subviews so that each subview is the same width (or height) as the NSSplitView, and the total of the subviews' heights (or widths), plus the total of the dividers' thicknesses, is equal to the height (or width) of the NSSplitView. The NSSplitView positions its subviews so that the first subview is at the top (or left) of the NSSplitView, and each successive subview is positioned below (or to the right of) the previous one. The user can set the height (or width) of two subviews by moving a horizontal (or vertical) bar called the divider, which makes one subview smaller and the other larger. Programmatically, you adjust the relative height of subviews simply by modifying the frame of each of the subviews.
Generally, you'll create an NSSplitView in Interface Builder by selecting the subviews and choosing the Group in Split View command. To add and remove subview to an NSSplitView programmatically, use the NSView methods addSubview: and removeFromSuperview.
When a mouse-down occurs in an NSSplitView's divider, the NSSplitView determines the limits of the divider's travel and tracks the mouse to allow the user to drag the divider within these limits. With the following mouse-up, the NSSplitView resizes the two affected subviews, informs the delegate that the subviews were resized, and displays the affected views and divider. The NSSplitView's delegate can constrain the travel of specific dividers by implementing the method splitView:constrainMaxCoordinate:ofSubviewAt:, splitView:constrainMinCoordinate:ofSubviewAt:, or splitView:constrainSplitPosition:ofSubviewAt:
When the NSSplitView is displayed-whether it's being displayed for the first time or redisplayed because the user resized the NSSplitView's window-it checks to see if its subviews are properly tiled. If not, it invokes the delegate method splitView:resizeSubviewsWithOldSize:, allowing the delegate to specify the heights (or widths) of specific subviews. If the delegate doesn't implement this method, the NSSplitView sends adjustSubviews to itself to resize the subviews proportionately. Note that the NSSplitView doesn't call the delegate methods splitView:constrainMaxCoordinate:ofSubviewAt:, splitView:constrainMinCoordinate:ofSubviewAt:, or splitView:constrainSplitPosition:ofSubviewAt: and may resize its subviews in a way that isn't allowed by these delegate methods.
- Managing component views
- - adjustSubviews
- - dividerThickness
- - drawDividerInRect:
- Managing orientation
- - isVertical
- - setVertical:
- Assigning a delegate
- - delegate
- - setDelegate:
- (void)adjustSubviews
See Also: - setDelegate:, setFrame: (NSView)
- (id)delegate
- (float)dividerThickness
See Also: - drawDividerInRect:
- (void)drawDividerInRect:(NSRect)aRect
See Also: - dividerThickness, - compositeToPoint:operation: (NSImage)
- (BOOL)isVertical
YES
if
the split bars are vertical (subviews are side by side), NO
if
it they are horizontal (views are one on top of the other). By
default, split bars are vertical.See Also: - setVertical:
- (void)setDelegate:(id)anObject
- (void)setVertical:(BOOL)flag
YES
,
they're vertical (views are side by side); if it's NO
,
they're horizontal (views are one on top of the other). Split
bars are horizontal by default.See Also: - isVertical
- (BOOL)splitView:(NSSplitView
*)sender
canCollapseSubview:(NSView *)subview
NO
or is undefined, subview can't
be collapsed. If this method returns YES
, subview collapses
when the user drags a divider beyond the halfway mark between its
minimum size and its edge. subview un-collapses
when the user drags the divider back beyond that point. To specify
the minimum size, define the methods splitView:constrainMaxCoordinate:ofSubviewAt: and splitView:constrainMinCoordinate:ofSubviewAt:.
Note that a subview can collapse only if you also define splitView:constrainMinCoordinate:ofSubviewAt:.A collapsed subview is hidden but retained by the NSSplitView object, with the same size it had before it was collapsed
- (float)splitView:(NSSplitView
*)sender
constrainMaxCoordinate:(float)proposedMax
ofSubviewAt:(int)offset
See Also: - isVertical
- (float)splitView:(NSSplitView
*)sender
constrainMinCoordinate:(float)proposedMin
ofSubviewAt:(int)offset
See Also: - isVertical
- (float)splitView:(NSSplitView
*)splitView
constrainSplitPosition:(float)proposedPosition
ofSubviewAt:(int)offset
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.
- (void)splitView:(NSSplitView
*)sender
resizeSubviewsWithOldSize:(NSSize)oldSize
Note that if you implement this delegate method to resize subviews on your own, the NSSplitView does not perform any error checking for you. However, you can invoke adjustSubviews to perform the default sizing behavior.
See Also: adjustSubviews, setFrame: (NSView)
- (void)splitViewDidResizeSubviews:(NSNotification
*)aNotification
- (void)splitViewWillResizeSubviews:(NSNotification
*)aNotification
NSSplitView declares and posts the following notifications. In addition, it posts notifications declared by its superclass, NSView. See the NSView class specification for more information.
Posted after the NSSplitView changes the sizes of some or all of its subviews.
See Also: - splitViewDidResizeSubviews:
Posted before the NSSplitView changes the sizes of some or all of its subviews.
See Also: splitViewWillResizeSubviews: