【问题标题】:UITableView offset in UINavigationViewController, displayed under UINavigationBarUINavigationViewController中的UITableView偏移,显示在UINavigationBar下
【发布时间】:2013-09-03 23:12:29
【问题描述】:

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

来回切换到侧边菜单执行得非常好,但是我在那个辅助视图上有一个棘手的问题,如果我推送一个视图(图片上的绿色视图)并弹出它,我的表格视图就会如下所示导航栏 20 pts...我仔细检查了它,它是 table view 的 superview,它不是从 64pts(在 y 原点)开始,而是从 44pts 开始。

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

http://d.pr/i/RNr4

谢谢

【问题讨论】:

    标签: ios uiviewcontroller uinavigationcontroller uitableview


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多