我有以下設置。UIViewController框架
帶有UIScrollView的pagingScrollViewController,因爲它的視圖(self.view = scrollView)。 在該scrollView中,我將一個rootViewController的視圖添加爲子視圖。 rootViewController的視圖是一個UIView,我在其上添加一個或另一個視圖(取決於內部邏輯)。
UIScrollView被初始化爲一個等於applicationFrame的框架,所以0,20,320,460。由於狀態欄位於頂部,所以這很好。
將rootViewController的視圖添加到滾動視圖時出現問題。在rootViewController的創建過程中,它的視圖是在-loadView中設置的,在我的情況下它仍然被註釋掉。所以標準的appel loadView被處理。
它給了我一個也有0幀的視圖,,320,460.這不是我想看到的,因爲現在rootViewController的視圖是從頂部刪除了40個像素實際的iPhone屏幕。
現在,這當然很容易通過在-loadView中手動設置rootViewControllers視圖或爲其指定一個幀,其中y在-viewDidLoad中設置爲0;
但我無法想象這就是蘋果公司打算完成此任務的方式。我沒有使用接口生成器,所以也許這就是問題所在,蘋果打算使用IB,但是我固執地研究這個主題:)
我是否以錯誤的方式使用viewControllers?這似乎是將scrollView的邏輯從另一個視圖的邏輯中分離出來的好方法。
將第二個UIViewController的視圖添加到第一個UIViewController的視圖的正確方法是什麼?其中第一個viewController.view接收一個0,20,320,460的幀。而第二個controller.view一個幀0,0,320,460(所以基本上是第一個controller.view的邊界)
這裏有很多使用單詞控制器和視圖,希望問題很明顯。
如何初始化rootViewController的視圖框架? – Ravin 2011-04-13 11:39:45
我不是,那是工作中的魔法*。如果您不覆蓋-loadView,系統會爲您創建一個視圖。不幸的是,一幀0,20,320,460。 – DIJ 2011-04-13 12:01:45
那就是答案本身。你的rootViewController有系統提供的0,20,320,460幀。所以當你將它添加到你認爲正常的視圖中時,它會相對較低,y = 20。 – Ravin 2011-04-13 12:06:15