这是我的设置:一个导航控制器,两个视图
第一个视图(根视图)显示状态栏和导航栏(纵向视图)。 当rootviewController检测到旋转时,它会隐藏导航栏和状态栏,然后将视图2推到导航控制器上(现在是横向)。
这部分按预期工作。
当View2 viewcontroller检测到旋转(回到纵向)时,它会自动弹出导航控制器,显示视图1.查看1然后取消隐藏状态栏和导航栏。 从这里开始,它变得奇怪了。根据我取消隐藏导航栏的时间,我得到奇怪的结果。如下所示(烧杯照片应位于屏幕顶部导航栏的正下方)。
我尝试取消隐藏导航栏:
没有任何作用。任何想法发生了什么?这应该很简单,但也许我在错误的地方做事。
答案 0 :(得分:0)
检查笔尖中所有视图的自动调整遮罩,并确保正确设置。如果你有任何不应该的方式,它将会轮换出来。
答案 1 :(得分:0)
不确定为什么这是必要的,但是当您交换视图时,必须对视图应用转换(只有1个视图,iPhone会为您执行此操作),并且您必须设置它的界限。
以下是适合您的代码(在willAnimateFirstHalfOfRotationToInterfaceOrientation上):
#define degreesToRadians(x) (M_PI * (x) / 180.0)
if (UIInterfaceOrientationIsLandscape(toInterfaceOrientation)) {
self.view = landscapeView;
self.view.transform = CGAffineTransformIdentity;
self.view.transform = CGAffineTransformMakeRotation(degreesToRadians(90));
self.view.bounds = CGRectMake(0.0, 0.0, 480.0, 320);
} else {
self.view = portraitView;
self.view.transform = CGAffineTransformIdentity;
self.view.transform = CGAffineTransformMakeRotation(degreesToRadians(0));
self.view.bounds = CGRectMake(0.0, 0.0, 300, 480);
}
答案 2 :(得分:0)
最后,我重新设计了我的应用。 (使用模态视图控制器)
但是我遇到了类似的问题,而不是状态栏所在的空白区域。
我认为这两个问题都可归因于在旋转/调整视图大小时不与导航控制器交谈(而是我正在与ViewController交谈。
有关我如何解决问题的详细信息: