zoukankan      html  css  js  c++  java
  • 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

     

  • 相关阅读:
    ssd 的anchor生成详解
    Qt小技巧8.利用反射机制通过类名创建Qt对象
    项目经验2.需求才是王道
    Qt实战12.可自由展开的ToolBox
    Qt实战11.进程窗口集成之假装写了个第三方软件
    Qt小技巧7.Qt4集成fusion风格
    Qt杂谈3.快速体验Qt for Android(windows平台)
    Qt实战10.支持最小化和最大化的QDockWidget
    gitlab 拉取远程分支代码
    CentOS7下用jdk1.7编译hadoop-2.7.1全过程详解
  • 原文地址:https://www.cnblogs.com/huibin-benteng/p/4913244.html
Copyright © 2011-2022 走看看