【问题标题】:cocoa NSTableView in CustomView in SplitView size don't adjustSplitView 中 CustomView 中的 cocoa NSTableView 大小不调整
【发布时间】:2013-01-17 20:12:58
【问题描述】:

我有一个 NSSplitView 作为我的“Superview”。在这个 SplitView 中是一个带有 NSTableView 的自定义视图。我正在尝试从 Controller 类加载我的自定义视图,然后调整自定义视图和表格的大小。但是表格和/或自定义视图不会调整大小。我做错了什么?

这是我的控制器类方法,我在其中加载并设置自定义视图的大小:
// 头文件 @property (weak) IBOutlet NSView *navigationView; @property (strong) AppsNavigationViewController *navigationViewController;

// Implementation
- (void) initNavigationView :(id)viewControllerClass :(NSString*) viewNibName {

  _navigationViewController = [[viewControllerClass alloc] 
                               initWithNibName:viewNibName bundle:nil]; 

 // add the current custom view to the parent view
 [_navigationView addSubview:[_navigationViewController view]];

 [[_navigationViewController view] setAutoresizingMask:
                                    NSViewHeightSizable|NSViewWidthSizable];

 // set the bounds of the custom view to the size of the parent view
 [[_navigationViewController view] setBounds:[_navigationView bounds]]; 

 [_navigationViewController setDelegate:self]; // not relevant

 [_splitView adjustSubviews]; // checked. contains the _navigationView

}

这是它的外观:

编辑 我对一些视图进行了子类化并绘制了不同的背景。而且绝对是自定义视图没有得到大小!

【问题讨论】:

    标签: objective-c cocoa nstableview nsview nssplitview


    【解决方案1】:

    您的表格的框架似乎不在其超级视图的原点。首先,尝试设置框架而不是边界,然后你可以在这样做之后调用它。

    [[_navigationViewController view] setFrameOrigin:NSMakePoint(0,0)];
    

    虽然我通常这样设置框架/边界,因为您的超级视图的边界可能不在其超级视图的 {0,0} 处...

    NSRect newFrame;
    newFrame.origin.x = 0;
    newFrame.origin.y = 0;
    newFrame.size.width = [[someView superview] frame].size.width;
    newFrame.size.height = [[someView superview] frame].size.height;
    [someView setFrame:newFrame]; 
    

    【讨论】:

    • 谢谢轩辕。但仍然是相同的行为。肯定是我的自定义视图没有得到正确的尺寸!!查看帖子中的编辑
    • 您是否尝试过使用设置框架而不是边界,或者您是否有任何其他影响这些属性的方法?
    • 也许会移除对 splitView 的调用。
    • 知道了。我必须调用 setFrame 而不是 setBounds 方法。多谢。那是我需要的提示。您可以编辑您的问题以便将其标记为答案吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-06
    • 2021-08-31
    • 1970-01-01
    • 2021-10-03
    • 1970-01-01
    相关资源
    最近更新 更多