在iOS 6上,我试图重现Facebook应用程序左右两侧的侧边菜单。我有两个View控制器,它们各自的视图添加在同一个窗口上(只有一个在另一个窗口下面)。我的辅助控制器是一个嵌入UINavigationViewController(名为“幻灯片菜单”)的UITableViewController,宽度为300磅 - 帧:(0,0,300,480)。
向前和向前切换到侧面菜单执行得非常好,但是我在那个辅助视图上有一个棘手的问题,如果我按下一个视图(图片上的绿色视图)并弹出它,我的表视图就会低于导航栏20点...我深入检查了它是表视图的超级视图,不是从64点(在y原点)开始,而是仅在44点。
真正有趣的是使用完全相同的代码,但只是将辅助视图控制器的帧从(0,0,300,480)更改为(0,0,320,480)可以解决问题!无论{320,480}的任何大小都不同,都会带来这个问题......
由于
答案 0 :(得分:0)
tableView.autoresizingMask = UIViewAutoresizingFlexibleHeight;
答案 1 :(得分:0)
经过几个小时的处理后,我无法直接解决问题。似乎将UIView(由UIViewController管理)直接附加到UIWindow是一个糟糕的主意。我怀疑框架正在检查视图的大小,如果它不等于屏幕的大小(换句话说,如果它不是"全屏")那么它会启动一个重新布局过程。视图。这里的问题更像是如果UIViewController没有关于状态栏的信息,那么重新布局过程会以某种方式搞砸......
无论如何,实现此效果的正确解决方案是使用一个UIViewController和2个子视图控制器。一个是幻灯片菜单,第二个是主视图。因为它们都将正确添加到视图层次结构中,所以它们将具有关于状态栏等的正确信息。