【发布时间】:2011-12-04 16:37:47
【问题描述】:
我创建了 UITabBarController 的子类,以便在横向模式下隐藏 tabBar 和 statusBar。我成功实现了隐藏/显示 tabBar 的代码,但 stausBar 让我发疯。我当前的实现 100% 有效,但不适用于第一次轮换,我无法弄清楚原因。 代码如下:
- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation
{
BOOL hide = (fromInterfaceOrientation == UIInterfaceOrientationPortrait ||
fromInterfaceOrientation == UIInterfaceOrientationPortraitUpsideDown);
[[UIApplication sharedApplication] setStatusBarHidden:hide withAnimation:UIStatusBarAnimationNone];
CGRect mainFrame = [[UIScreen mainScreen] applicationFrame];
[self.view setFrame:mainFrame];
}
实际上,当我第一次旋转我的 iPhone 时,statusBar 是正确隐藏的,但框架不正确(顶部有 20px 的间隙)。如果我从这里返回纵向视图,布局将按预期恢复,如果我第二次以横向旋转,它将最终按预期工作(没有条,像素完美布局!)......从这一点开始,我可以将我的设备旋转 N 次,并且视图将始终以正确的方式呈现...... 那么,为什么我的代码第一次失败?!
您可能需要的额外信息:
- 根标签控制器是 UINavigationControllers
- 我的所有嵌套视图控制器都已正确配置为支持方向更改
- 我正在使用 iOS 5 进行测试
【问题讨论】:
标签: iphone objective-c ios