iOS 7 中的视图移动到导航栏上方,但在 iOS 6 中可以正常工作

Posted

技术标签:

【中文标题】iOS 7 中的视图移动到导航栏上方,但在 iOS 6 中可以正常工作【英文标题】:Views in iOS7 moved above Navigation bar but work fine in iOS6 【发布时间】:2013-12-16 16:54:26 【问题描述】:

我无法让 UISearchBar 在 ios7 上正常显示。我不能使用 AutoLayout,因为我还必须支持 6 之前的旧版本 iOS 的应用程序。如果 iOS 版本为 7 及更高版本,我尝试设置容器视图的框架,但它不起作用。我还尝试了 topLayOutGuide 长度和其他 SO 帖子中提到的其他技巧,但我无法成功。 (编辑:- 我正在使用故事板)

我目前在我的代码中唯一的东西是

if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"7.0")) 
    self.edgesForExtendedLayout = UIRectEdgeNone;

有人可以帮我解决这个问题吗?

【问题讨论】:

【参考方案1】:

我尝试建议在storyboard 中进行更改:

点击您的viewControllerattributes inspector 取消选中顶部栏下

如果这不起作用,请尝试以下代码:

-(void)viewWillAppear:(BOOL)animated 

 NSString *ver = [[UIDevice currentDevice] systemVersion];
 int ver_int = [ver intValue];

 if (ver_int < 7) 
 
 else 
     self.navigationController.navigationBar.translucent = NO;
 


【讨论】:

取消选中“在顶部栏下”现在可以在故事板中显示正确的视图,这是向前迈出的一步。但是当我在模拟器中运行该应用程序时,它仍然无法正常工作。非常感谢您的支持。 @ilight 很抱歉没有提供太多帮助,您尝试过我建议的代码吗? @ilight 尝试使用我的代码,但删除 self.edgesForExtendedLayout = UIRectEdgeNone; 第一次打开视图时它不起作用,但如果我返回并再次进入视图,您的代码就可以工作。我目前把它放在 ViewDiDLoad 中。我可以把它移到哪里让它一直工作? @ilight 正如我在上面写的,您应该尝试将此代码放入 viewWillAppear

以上是关于iOS 7 中的视图移动到导航栏上方,但在 iOS 6 中可以正常工作的主要内容,如果未能解决你的问题,请参考以下文章

隐藏导航栏将视图“向上”移动

使用 iOS 7 滑动导航时导航栏出现故障

iOS 7 导航栏隐藏内容

模态视图导航栏的位置 - iOS7

如何防止 UINavigationBar 在 iOS 7 中覆盖视图顶部?

iOS 通过故事板将 UIView 锁定在导航栏下方和 UITableView 上方