使用具有自動佈局和約束的Storyboard編輯器,我創建了一個具有UIViewController(1)的層次結構,其中有一個Container(2),其中依次包含一個Container UIViewcontroller(3)被嵌入。在容器中獲取視圖的實際大小
將嵌入式UIViewController(3)的背景顏色設置爲與(1)不同的顏色,這表明約束條件正在執行:從視覺上看,它看起來和我在故事板編輯器模擬器和我的設備上。我試圖訪問UIViewControllers(3)視圖框架和界限,兩個都有不正確的結果,他們似乎返回相同的大小作爲大小的UIViewController(3)視圖框架和邊界,主機UIViewController(1),這顯然是錯誤的,因爲一旦確實嵌入其他。
我也嘗試訪問self.parentViewController.view框架和邊界,但這些都返回0.0。
在嵌入式的UIViewController(3):
- (void)viewDidLoad
{
[super viewDidLoad];
NSLog(@"Size: %f x %f", self.view.frame.size.width, self.view.frame.size.height);
NSLog(@"Origin: %f x %f", self.view.frame.origin.x, self.view.frame.origin.y);
}
我期望的此輸出被什麼東西其類似於,至少在高寬比,所述的UIViewController(3)的實際可見的大小,但它實際上等於我從UIViewController(1)中得到相同的代碼,這顯然不是真的,因爲它們的大小不一樣。
如果我正確地讀出,容器視圖保留了視圖控制器?這顯然聽起來不對。 [見這裏](https://developer.apple.com/library/ios/documentation/general/conceptual/devpedia-cocoacore/MVC.html) – John
約翰,但這正是一個容器是「定義的區域一個可以包含視圖控制器的視圖控制器「 – DusteD
這就是我爲什麼沒有正確閱讀的原因:儘管我仍然認爲它打破了Cocoa自己的規則。噢,無視 – John