在我的应用中,我需要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]
访问窗格时,我得到了正确的尺寸。
答案 0 :(得分:1)
当你试图获得这些职位时,可能还没有提出意见。 viewDidLoad in NSViewController?问题指出loadView
应该用于修改视图的布局。同一个问题中的这个answer显示了使Cocoa代码与Cocoa-touch代码类似的技巧。
答案 1 :(得分:1)
事实证明,初始化程序不是查询视图大小的地方,或者看起来如此。当我在-awakeFromNib
方法中检查视图的大小时,它们是正确的。这似乎合乎逻辑。