这真的很奇怪,我不确定到底发生了什么。
我的iPad应用程序上有一个UISplitViewController。我可以反复从纵向旋转到横向,它的工作方式与预期完全一致。但是,如果我处于纵向方向,我点击按钮显示包含UISplitViewController左侧的弹出框,然后在可见时旋转,当旋转完成时,左侧表现在被按下在它与导航栏之间留下黑色间隙。
到底能造成什么?
我已经注释掉了我的-willRotateToInterfaceOrientation:duration
和-didRotateFromInterfaceOrientation:
方法,问题仍然存在,所以它不是由我的轮换代码引起的。 (该代码只是明确地驳回了那个popover)。
在引起问题的旋转之后,我递归地打印出左侧的视图层次结构以及帧大小:
UILayoutContainerView ({{0, 0}, {320, 748}})
UINavigationBar ({{0, 0}, {320, 44}})
UILayoutContainerView ({{0, 37}, {320, 711}})
UINavigationTransitionView ({{0, 0}, {320, 711}})
UIViewControllerWrapperView ({{0, 44}, {320, 667}})
UIView ({{0, 0}, {320, 667}})
UITableView ({{0, 0}, {320, 667}})
它显示导航栏高44像素,保持我的左侧视图控制器的视图容器从0,44开始,我的tableview在0,0开始,但是更短....我不明白为什么它没有正确显示。
以下是横向应该是什么样子。在左侧,您将看到表格标题“您想知道什么?”它位于导航栏的正下方,带有“切换到计算器”按钮。
当我换到纵向方向并点按“你想知道什么?”时按钮,弹出窗口显示包含左侧导航控制器和UITableViewController。
现在,当我旋转回横向时,导航栏和UITableView之间会出现黑色间隙。
答案 0 :(得分:0)
我记得在使用此应用程序时遇到的问题与去年非常相似,但我无法找到任何有关它的旧StackOverflow帖子。但是,我记得在纵向模式下,有一些原因让我在弹出窗口中包含导航栏(或者更确切地说,使其可见)。出于审美目的,我宁愿让它在风景中可见,但在肖像popover中看不到..然后我记得我加入它的原因是因为它似乎解决了这个问题。
它似乎是iOS中的一个奇怪的错误,但显示Nav Bar似乎都解决了这个问题。所以,我决定将它改回到我真正想要的方式:在风景中可见,在肖像中看不到......和BAM。黑色间隙消失了。因此,似乎仍然存在奇怪的错误,但它现在正在逆转。
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
UIDeviceOrientation deviceOrientation = [UIApplication sharedApplication].statusBarOrientation;
BOOL isPortrait = UIDeviceOrientationIsPortrait(deviceOrientation);
if (isPortrait) {
self.navigationController.navigationBarHidden = YES;
} else {
self.navigationController.navigationBarHidden = NO;
}
}
}