Developer Documentation
PATH  Mac OS X Documentation > Application Kit Reference: Objective-C


[Previous] [Class List] [Next]

NSSplitView


Inherits from: NSView : NSResponder : NSObject
Conforms to: NSCoding
(from NSResponder)
NSObject (from NSObject)
Declared in: AppKit/NSSplitView.h




Class Description


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 splitViewConstrainMaxSplitPositionsplitView:constrainMaxCoordinate:ofSubviewAt:, splitViewConstrainMinSplitPositionsplitView:constrainMinCoordinate:ofSubviewAt:, or splitViewConstrainSplitPositionsplitView: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 splitViewResizeSubviewssplitView: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 splitViewConstrainMaxSplitPositionsplitView:constrainMaxCoordinate:ofSubviewAt:, splitViewConstrainMinSplitPositionsplitView:constrainMinCoordinate:ofSubviewAt:, or splitViewConstrainSplitPositionsplitView:constrainSplitPosition:ofSubviewAt: and may resize its subviews in a way that isn't allowed by these delegate methods.


Method Types


Managing component views
- adjustSubviews
- dividerThickness
- drawDividerInRect:
Managing orientation
- isVertical
- setVertical:
Assigning a delegate
- delegate
- setDelegate:


Instance Methods



adjustSubviews

- (void)adjustSubviews

Adjusts the sizes of the NSSplitView's subviews so they (plus the dividers) fill the NSSplitView. The subviews are resized proportionally; the size of a subview relative to the other subviews doesn't change.

See Also: - setDelegate:, - setFrame: (NSView)



delegate

- (id)delegate

Returns the NSSplitView's delegate.

dividerThickness

- (float)dividerThickness

Returns the thickness of the divider. The default thickness depends on the platform. You can subclass NSSplitView and override this method to change the divider's size, if necessary.

See Also: - drawDividerInRect:



drawDividerInRect:

- (void)drawDividerInRect:(NSRect)aRect

Draws the divider between two of the NSSplitView's subviews. aRect describes the entire divider rectangle in the NSSplitView's coordinates, which are flipped. The default implementation draws a default "dimple" image to the center of aRect; if you override this method and use a different icon to identify the divider, you may want to change the size of the divider.

See Also: - dividerThickness, - compositeToPoint:operation: (NSImage)



isVertical

- (BOOL)isVertical

Returns 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:



setDelegate:

- (void)setDelegate:(id)anObject

Makes anObject the NSSplitView's delegate. The notification messages the delegate can expect to receive are listed at the end of the NSSplitView class specification. The delegate doesn't need to implement all of the delegate methods.

setVertical:

- (void)setVertical:(BOOL)flag

Sets whether the split bars are vertical. If flag is 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





Notifications


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.

NSSplitViewDidResizeSubviewsNotification

This notification contains a notification object but no userInfo dictionary. The notification object is the NSSplitView that resized its subviews.

Posted after the NSSplitView changes the sizes of some or all of its subviews.

See Also: - splitViewDidResizeSubviews:

NSSplitViewWillResizeSubviewsNotification

This notification contains a notification object but no userInfo dictionary. The notification object is the NSSplitView object that is about to resize its subviews.

Posted before the NSSplitView changes the sizes of some or all of its subviews.

See Also: - splitViewWillResizeSubviews:



[Previous] [Next]