IOS7:Pop ViewController强制UIImageView放下

将我的项目升级到iOS7后

在初始加载

当我做一个BACKbutton并且UINavigationController返回到上一页时,屏幕顶部的一个ImageView向下移动。

图像下移

我使用IB来做我的布局。 这些是我的模拟指标:

模拟指标

我有AutoLayoutclosures。 任何想法可能是什么问题? 我不确定是否有人想看到特定的代码,我不想用太多的代码来混淆这个问题。

更新:根据评论问题,我想做这些更新:

  • 在应用程序中.h或.m文件中没有任何地方可以对imageview的大小或位置进行任何更改。
  • viewDidLoadviewDidAppear我都调用了一个名为recalculateAll的用户定义的方法,但是它们对于任何图像视图尺寸都没有任何引用。 只是为了尝试它,我注释了整个部分,并运行代码,它仍然跳下来。
  • 在我的init我用程序设置了一些图像视图(你可以看到#132中看起来像个泡泡),用它们的x和y来表示。

这里是一个典型的导航我用于从视图控制器移动到tableviewcontroller:

  GetTimeOffByType *showTimeOffReport = [[GetTimeOffByType alloc] initWithNibName:@"GetTimeOffByType" bundle:nil]; showTimeOffReport.timeOffType = @"Vacation"; [self.navigationController pushViewController:showTimeOffReport animated:YES]; 

这些都是.xib文件,根本没有故事板。 它基本上是一个视图控制器,它有一个embedded的6个button的UINavigationController 。 每次按下一个button,它都会推送一个UITableViewController传递不同的参数并显示不同的数据。 我用来回到原来的UIViewController的过渡只是iOS生成的BACKbutton(所以没有代码显示)

更新#2希望这将帮助别人解决这个奇怪的行为。 因此,如果我点击showTimeOffReport上的表格视图单元格来获取单元格细节,然后使用BACK导航回来,它不会跳下去。

更新#3好吧,这是我刚刚发现的东西:跳下来的问题与UINavigationBar的半透明有关。 如果您有半透明=是,它将从窗口的顶部开始。 如果你有半透明=否,它将从UINavigationBar的底部开始。

您可以尝试将UIViewController edgesForExtendedLayout上的新属性设置为UIRectEdgeNone

这里有一个很好的资源,可以更详细地解释iOS 7中视图布局如何变化。

请参阅Apple文档

如果您计划向后兼容,则可能需要执行一些运行时检查,并在设备未运行iOS 7时调整定位。

这可能会帮助你..你可以尝试添加UIViewControllerBasedStatusBarAppearance键,并在您的info.plist中设置它的值NO

 UIViewControllerBasedStatusBarAppearance = NO