所以,我有这个问题,基本上视图控制器出现在导航控制器下方。这在 iOS 7 中经常发生,但是,在这种情况下,我无法使用 just 修复它self.edgesForExtendedLayout = UIRectEdgeNone,因为我不知道应该为哪个视图控制器设置它。
我怎么能解决这个问题?
谢谢。

所以,我有这个问题,基本上视图控制器出现在导航控制器下方。这在 iOS 7 中经常发生,但是,在这种情况下,我无法使用 just 修复它self.edgesForExtendedLayout = UIRectEdgeNone,因为我不知道应该为哪个视图控制器设置它。
我怎么能解决这个问题?
谢谢。

解决了。viewWillAppear在 SPLoginViewController.m 中创建一个方法,如下所示:
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
UIViewController *internalLoginViewController = [[self viewControllers] objectAtIndex:0];
if (internalLoginViewController && [internalLoginViewController respondsToSelector:@selector(edgesForExtendedLayout)])
{
[internalLoginViewController setEdgesForExtendedLayout:UIRectEdgeNone];
}
}
显然,我们要定位的视图控制器是 UINavigationController 的视图控制器中索引为 0 的视图控制器(SPLoginViewController 是 UINavigationController)。
通过在 viewcontroller 属性中取消选中它

只需取消选中 Adjust Scroll View Insets 即可。
更新:如果您不使用 xib/storyboard,请使用它
self.edgesForExtendedLayout=UIRectEdgeNone;
self.extendedLayoutIncludesOpaqueBars=NO;
self.automaticallyAdjustsScrollViewInsets=NO;