1

在 iOS 6 上,我试图重现 Facebook 应用程序的左右侧菜单。我得到了 2 个视图控制器,它们各自的视图添加在同一个窗口上(只有一个低于另一个)。我的辅助控制器是嵌入在 UINavigationViewController(名为“幻灯片菜单”)中的 UITableViewController,其宽度为 300 pts -- frame : (0, 0, 300, 480)。

来回切换到侧边菜单执行得很好,但是我在那个辅助视图上有一个棘手的问题,如果我按下一个视图(图片上的绿色视图)并弹出它,我的表格视图就在导航栏下方到 20 点...我深入检查了它,它是表格视图的超级视图,它不是从 64 点(在 y 原点)开始,而只是在 44 点。

真正有趣的是,使用完全相同的代码,但只需将辅助视图控制器的框架从 (0, 0, 300, 480) 更改为 (0, 0, 320, 480) 即可解决问题!但是,任何与 {320, 480} 不同的大小都会导致此问题...

http://d.pr/i/RNr4

谢谢

4

2 回答 2

0

你试过这个吗? tableView.autoresizingMask = UIViewAutoresizingFlexibleHeight;

于 2013-09-03T23:15:35.073 回答
0

经过数小时的研究,我无法直接解决这个问题。似乎将 UIView(由 UIViewController 管理)直接附加到 UIWindow 是一个糟糕的主意。我怀疑框架正在检查视图的大小,如果它不等于屏幕的大小(换句话说,如果它不是“全屏”),那么它会在视图上启动重新布局过程。这里的问题更像是 UIViewController 没有关于状态栏的信息,所以重新布局过程以某种方式搞砸了......

无论如何,做这个效果的正确解决方案是使用一个 UIViewController 和 2 个子视图控制器。一个是幻灯片菜单,第二个是主视图。因为它们都将被正确添加到视图层次结构中,所以它们将具有有关状态栏等的正确信息。

于 2013-09-04T13:29:11.980 回答