设备旋转时,未选择非选定选项卡栏视图控制器的大小

时间:2011-04-29 05:25:45

标签: iphone xcode ipad uitabbar rotation

我在使我的应用iPad兼容时遇到问题。

我有一个自定义标签栏的实现,基于这里的帖子http://www.wiredbob.com/blog/2009/4/20/iphone-tweetie-style-navigation-framework.html

除了旋转设备外,一切正常。当前选定的视图旋转并完美调整大小。每个其他视图都会旋转,但不会调整大小以填充空间。右侧有一个大的白色柱子。

我尝试过添加

self.view.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
self.view.autoresizesSubviews = YES;

到选项卡控制器视图。

我在选项卡的视图viewDidLoad方法中添加了类似的代码。

我试图让willRotateToInterfaceOrientation调用所有子视图旋转方法,但仍然没有运气。

在此阶段,任何建议都会受到欢迎。我希望我不会忽视一些明显的东西,但我可能会。我已经在这里待了几个小时

截屏1 - Rotating the selected tab works fine see below for what the other tabs look like 屏幕截图Screenshot of the result of rotating and selected a different tab

1 个答案:

答案 0 :(得分:0)

好的我解决了这个问题。

我要做的是在所有子视图上手动调用resize。 - 我为每个子视图添加了一个changeFrameSize函数(只是因为它使代码看起来更好一些)

哦,当添加视图作为子视图时,总是使用belowSubView方法 -

[self.view insertSubview:viewController.view belowSubview:tabBar];

-(void) didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation
{
[(ViewControllerClass *)[viewControllers objectAtIndex:0] changeFrameSize:[NSNumber numberWithFloat:self.selectedViewController.view.bounds.size.width] height:[NSNumber numberWithFloat:self.selectedViewController.view.bounds.size.height]];
[(ViewControllerClass *)[viewControllers objectAtIndex:1] changeFrameSize:[NSNumber numberWithFloat:self.selectedViewController.view.bounds.size.width] height:[NSNumber numberWithFloat:self.selectedViewController.view.bounds.size.height]];
[(ViewControllerClass *)[viewControllers objectAtIndex:2] changeFrameSize:[NSNumber numberWithFloat:self.selectedViewController.view.bounds.size.width] height:[NSNumber numberWithFloat:self.selectedViewController.view.bounds.size.height]];
}

因为所选的视图控制器总是旋转并调整大小到正确的大小,一旦它旋转并调整后我只是将相同的参数传递给子视图,所以它们也会调整大小。

相关问题