2011-09-26 107 views
1

我知道一個奇怪的問題。在UITabBarController中第一次顯示的時候,UIVIewController視圖的框架會改變。當在UITabBarController框架中選擇UIViewController時,視圖發生變化

我會嘗試描述我的架構。 我有一個類是UITabController的子類。在這個類內部,我創建了3個UIViewController(A,B,C),並將它們放到了UITabBarController的viewControllers數組中。 UITabBarController的selectedIndex設置爲0,所以A是第一個顯示的。 Everthing在視圖A中正常呈現。但是,當我切換到第二視圖B或第三視圖C時,每個子視圖框架都以某種方式被打破。尺寸和位置已更改。

i將UIViewControllers(A,B,C)的框架添加到UITabBarController的viewControllers數組之前,其結果爲(0,20,320,460)。在顯示它們時,它們的框架變爲(0,0,320,411)。但ViewControlles A仍然呈現OK。其他兩個不是:S

回答

2

必須看到一些代碼來確切地知道問題是什麼,但同時你應該做的是設置你的viewController的viewWillAppear方法的子視圖,並使用BOOL來確保它們是隻有一次設置(不是每次調用viewWillAppear方法時)。這應該確保子視圖匹配正確的框架。

-(void)viewWillAppear { 
if (!viewWasAlreadySetUpBOOL) { 
//setup all the views 
viewWasAlreadySetUpBOOL = YES; 
} 
} 
+0

Thx,但我不認爲這解決了我的問題。在將它添加到UITabBarController的viewControllers數組之前,我只設置了UIViewController的子視圖一次。我不認爲viewWillAppear方法。 – troner

+0

我知道。按照我所述使用 - (void)viewWillAppear方法,看看會發生什麼。它只會爲每個viewController設置一次視圖(這就是bool的用途)。過去我也遇到過類似的問題,這很有效。 – Zigglzworth

+0

嗯。有趣。好吧,我會盡力讓你知道。謝謝 – troner

0

確實有意義的是,在將視圖添加到tabBar數組後,您的幀高度可能會發生變化。標準tabBar的高度爲49px,這是您在日誌中看到的高度值的差異。這很有意義,因爲每個視圖都會根據可用的屏幕大小進行調整,減去tabBar的大小。

你是如何設置你的意見,編程或IB?你使用什麼尺碼?如果你正在設置你的框架,無論是編程或通過IB,但沒有考慮到tabBar的偏移量,它可能會拋出你的意見放置的地方。這將有助於看到一些代碼,但沒有任何,我會建議檢查如何調整標籤欄的框架。

相關問題