2011-09-26 98 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的偏移量,它可能会抛出你的意见放置的地方。这将有助于看到一些代码,但没有任何,我会建议检查如何调整标签栏的框架。

相关问题