2013-06-26 34 views
1

在我的應用程序中,我需要有一個splitView,並且能夠將自己的視圖插入窗格。Xcode,自定義視圖 - 零框架/邊框

爲此,在界面構建器中,我創建了帶有兩個分隔符(三個窗格)的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

你可以顯示你正在使用的代碼來查詢這些自定義視圖的大小和範圍嗎? –

+0

@AdamRichardson我已經添加了相關的代碼作爲我的文章的更新。謝謝。 – Ibolit

回答

1

原來,初始化程序不是查詢視圖大小的地方,或者看起來如此。當我檢查-awakeFromNib方法中的視圖大小時,它們是正確的。這似乎合乎邏輯。

1

當您嘗試獲取職位時,可能還沒有佈置視圖。 viewDidLoad in NSViewController?問題指出應該使用loadView來修改視圖的佈局。在同一個問題中的這個answer顯示了一個讓你的Cocoa代碼類似於Cocoa-touch代碼的技巧。

+0

這是可可,現在我已經添加了相應的標籤。據我所知,Cocoa中沒有相應的方法。 – Ibolit

+0

你解決了這個問題嗎? – allprog

+0

還沒有。但我現在只是以編程方式完成所有設置,而不是用IB連接它。它符合我的目的,但它並不回答原來的問題。 – Ibolit