本文代码最终实现界面为
两种方法可以实现divider的上下拖动:
1.调用NSSplitViewDelegate
- (CGFloat)splitView:(NSSplitView *)splitView constrainSplitPosition:(CGFloat)proposedPosition ofSubviewAt:(NSInteger)dividerIndex;
用此方法要先设置splitview的delegate为当前app([_splitOuter setDelegate:self];)或
- (CGFloat)splitView:(NSSplitView *)splitView constrainSplitPosition:(CGFloat)proposedPosition ofSubviewAt:(NSInteger)dividerIndex
{
NSLog(@"split view is being dragged");
CGFloat position = proposedPosition;
return position;
}
2.调用通知
- (void) splitViewDidResizeSubviews:(NSNotification *)notification
//- (void) splitViewDidResizeSubviews:(NSNotification *)notification
//{
//
// NSSplitView *split = [notification object];
// NSString *splitName = [split identifier];
//
NSLog(@"split name is %@",[split identifier]);
//
// NSArray *allviews = [split subviews];
//
// if ([splitName isEqualToString:@"split_outer"]) {
// //1.修改split_outer.topview中控件的大小位置
// NSView *topView = [allviews objectAtIndex:0];
// [[self.textViewConsole enclosingScrollView] setFrame:[topView frame]];
//
// NSView *bottomView = [allviews objectAtIndex:2];
// NSSize bottomSize = [bottomView frame].size;
// NSRect bottomRect = {0,0,bottomSize.width,bottomSize.height};
// [[self.tableViewProgress enclosingScrollView] setFrame:bottomRect];
//
// //2.修改split_outer.bottomview中控件的大小位置
// NSView *middleView = [allviews objectAtIndex:1];
// NSRect middleRect = [middleView frame];
//
// NSLog(@"x:%f,y:%f,w:%f,h:%f",middleRect.origin.x,middleRect.origin.y,middleRect.size.width,middleRect.size.height);
//
// //3. 修改split_outer.middle下拉动时对应其它控件的大小
// NSPoint point = NSMakePoint(0, 0);
// [self.splitInner setFrameOrigin:point];
// [self.splitInner setFrameSize:middleRect.size];
//
// NSArray *innerSubViews = [self.splitInner subviews];
//
// NSView *leftTableViewOuterView = [innerSubViews objectAtIndex:0];
// NSSize leftTableViewOuterViewSize = [leftTableViewOuterView frame].size;
// [[self.leftTableView enclosingScrollView] setFrameSize:leftTableViewOuterViewSize];
// [[self.leftTableView enclosingScrollView] setFrameOrigin:point];
//
// NSView *rightTableViewOuterView = [innerSubViews objectAtIndex:1];
// NSSize rightTableViewOuterViewSize = [rightTableViewOuterView frame].size;
// [[self.rightTableView enclosingScrollView] setFrameSize:rightTableViewOuterViewSize];
// [[self.rightTableView enclosingScrollView] setFrameOrigin:point];
//
// } else if([splitName isEqualToString:@"split_inner"]){
// NSLog(@"xxxxxxx");
//
// NSPoint point = NSMakePoint(0, 0);
// NSArray *innerSubViews = [self.splitInner subviews];
//
// NSView *leftTableViewOuterView = [innerSubViews objectAtIndex:0];
// NSSize leftTableViewOuterViewSize = [leftTableViewOuterView frame].size;
// [[self.leftTableView enclosingScrollView] setFrameSize:leftTableViewOuterViewSize];
// [[self.leftTableView enclosingScrollView] setFrameOrigin:point];
//
// NSView *rightTableViewOuterView = [innerSubViews objectAtIndex:1];
// NSSize rightTableViewOuterViewSize = [rightTableViewOuterView frame].size;
// [[self.rightTableView enclosingScrollView] setFrameSize:rightTableViewOuterViewSize];
// [[self.rightTableView enclosingScrollView] setFrameOrigin:point];
//
// }
//}
最后设置size inspector
每个view都要设置
http://i.cnblogs.com/Files.aspx
转载于:https://www.cnblogs.com/huibin-benteng/p/4913244.html