UINavigationBar调整并覆盖UIViews

时间:2014-06-05 21:06:47

标签: ios objective-c uinavigationcontroller

我们从故事板中实现UINavigationController和UIViewController,如下所示:

UIStoryboard *sb = [UIStoryboard storyboardWithName:@"AddOrder" bundle:nil];
UIViewController *vc = [sb instantiateInitialViewController];
UIViewController *topVC = ((UINavigationController *) vc).topViewController;

vc.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
[self presentViewController:vc animated:YES completion:NULL];

enter image description here

从这里开始,看起来UIViewController不占用整个UIWindow,它看起来像ios6上的20点。如果仔细观察,您甚至可以在左上角看到基础UISplitViewController的分隔线。

问题是,当用户点击UITableView上的UIViewController选项时,我们会调用[self performSegueWithIdentifier: sender:]推送新的UIViewController,但是当它们轮换时,它看起来像这样:

enter image description here

至少可以说,有点局促。 但是现在,当我们回到第一个UIViewController并轮换时,我们得到了这个

enter image description here

问题是,搜索栏现在已被覆盖。您会注意到您无法再查看基础UISplitViewController。正如您所看到的,现在看起来UINavigationBar覆盖了其他20个点并且高度更大。

我有点"修复"通过调用self.edgesForExtendedLayout = UIRectEdgeNone;来解决这个问题,但这只是推动了UIView相当远的问题。我还玩弄了[UIViewController attemptRotationToDeviceOrientation]而没有添加任何内容。在Apple的HIG中,它指出导航栏不应该改变它在iPad上的高度,但是当我退出框架时,这种情况发生在我身上。

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

您好您可以使用这些属性创建视图控制器 enter image description here

在应用程序窗口中添加模态

[self.view.window.rootViewController presentViewController:vc animated:YES completion:nil];

我认为你的问题将由此解决。

答案 1 :(得分:0)

只需按

修复
self.automaticallyAdjustsScrollViewInsets = NO; 

将此行放在viewDidLoad方法中,然后创建其他控制器。

它只适用于iOS 7和后者。