1

在我的应用程序中,我需要一个splitView并且能够将我自己的视图插入到窗格中。

为此,在界面构建器中,我创建了一个SplitView带有两个分隔符(三个窗格)的,并将这三个窗格中的“自定义视图”添加IBOutlets到我相应的视图控制器中。但是,当我查询IBOutlets它们的帧/边界大小时,它们都是 0.00000。

为什么我在 Xcode 中创建的自定义视图大小为 0?我该如何解决?

UPD:查询窗格框架/边界的代码:

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        self.logList = [[LogListViewController alloc] initWithNibName:LOGLISTXIB bundle:nil];
        [self logARect:self.leftPane.bounds withName:@"LeftPane bounds"];
        [self logARect:self.leftPane.frame withName:@"LeftPane Frame"];
    }
}
- (void) logARect:(NSRect) theFrame withName:(NSString *)name {
    NSLog(@"%@ frame: %lf, %lf, %lf, %lf", name, theFrame.origin.x, theFrame.origin.y, theFrame.size.width, theFrame.size.height);
}

UPD2同时,当我通过 访问窗格时self.view.subviews[0],我得到了正确的大小。

4

2 回答 2

1

当您尝试获得职位时,视图可能尚未布局。NSViewController 中的viewDidLoad?问题指出loadView应该用来修改视图的布局。同一问题中的这个答案显示了使您的 Cocoa 代码类似于 Cocoa-touch 代码的技巧。

于 2013-06-26T10:50:33.687 回答
1

事实证明,初始化程序不是查询视图大小的地方,或者看起来如此。当我检查-awakeFromNib方法中视图的大小时,它们是正确的。这似乎是合乎逻辑的。

于 2013-06-30T17:42:09.200 回答