• NSSplitView


    本文代码最终实现界面为

    两种方法可以实现divider的上下拖动:

    1.调用NSSplitViewDelegate

    /* Given a proposed position for one of the dividers of a split view, return a position at which the divider should be placed as the user drags it. If a split view has no delegate, or if its delegate does not respond to this message, the split view behaves as if it has a delegate that responds to this message by merely returning the proposed position. If a split view has a delegate, and the delegate responds to this message, it will be sent repeatedly as the user drags one of the split view's dividers.

    */

    - (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

     

  • 相关阅读:
    C#_数据访问类查询 和 属性扩展
    C#_0913 完整修改删除、实体类和数据访问类
    webform基础
    TreeView, 数据导出
    无边框窗体,tiner控件
    容器,打印设置
    多窗体,菜单工具栏
    公共控件
    winform
    数据访问类查询
  • 原文地址:https://www.cnblogs.com/huibin-benteng/p/4913244.html
Copyright © 2020-2023  润新知