IOS7:Pop ViewController强制UIImageView放下
将我的项目升级到iOS7后
当我做一个BACKbutton并且UINavigationController返回到上一页时,屏幕顶部的一个ImageView向下移动。
我使用IB来做我的布局。 这些是我的模拟指标:
我有AutoLayoutclosures。 任何想法可能是什么问题? 我不确定是否有人想看到特定的代码,我不想用太多的代码来混淆这个问题。
更新:根据评论问题,我想做这些更新:
- 在应用程序中.h或.m文件中没有任何地方可以对imageview的大小或位置进行任何更改。
- 在
viewDidLoad
和viewDidAppear
我都调用了一个名为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生成的BACK
button(所以没有代码显示)
更新#2希望这将帮助别人解决这个奇怪的行为。 因此,如果我点击showTimeOffReport
上的表格视图单元格来获取单元格细节,然后使用BACK导航回来,它不会跳下去。
更新#3好吧,这是我刚刚发现的东西:跳下来的问题与UINavigationBar的半透明有关。 如果您有半透明=是,它将从窗口的顶部开始。 如果你有半透明=否,它将从UINavigationBar的底部开始。
您可以尝试将UIViewController edgesForExtendedLayout
上的新属性设置为UIRectEdgeNone
。
这里有一个很好的资源,可以更详细地解释iOS 7中视图布局如何变化。
请参阅Apple文档
如果您计划向后兼容,则可能需要执行一些运行时检查,并在设备未运行iOS 7时调整定位。
这可能会帮助你..你可以尝试添加UIViewControllerBasedStatusBarAppearance
键,并在您的info.plist中设置它的值NO
UIViewControllerBasedStatusBarAppearance = NO