在 RootController 上调整 UITableView 的大小
Posted
技术标签:
【中文标题】在 RootController 上调整 UITableView 的大小【英文标题】:Resizing UITableView on RootController 【发布时间】:2009-03-18 04:45:49 【问题描述】:是否可以在基于导航的应用程序的 RootController 上调整 UITableView 的大小?在 IB 中打开 RootViewController.xib 时,没有视图。只是 UITableView。单击检查器,然后单击黄色小标尺,框架高度显示为灰色。我正在以编程方式向 RootViewController 添加工具栏:
[toolbar setFrame:rectArea];
这工作正常,但表格视图中的底部单元格被部分隐藏,因为表格视图不知道工具栏。
【问题讨论】:
【参考方案1】:最简单的方法,就是调整contentInset(继承自UIScrollView)。通过设置框架来调整大小可能会导致单元格中出现疯狂的绘图错误。
例如,如果您尝试为键盘调整 tableview 的大小,请执行以下操作:
tableView.contentInset = UIEdgeInsetsMake(0.0, 0.0, 216.0, 0.0);
tableView.scrollIndicatorInsets = tableView.contentInset;
希望对某人有所帮助。这种方式最适合我。
【讨论】:
【参考方案2】:是的,但是您需要有一个 ViewController(不是 UITableViewController)作为导航的根控制器,并将实际的 UITableView 包装在 UIViewControllers 视图中。
您仍然可以让 UIViewController 符合 UITableViewDelgate 和 Datasource 协议,并使用您现在在 UITableViewController 中拥有的所有相同方法。
附:如果你使用普通的“iphone”标签,你会得到更多的回应。
【讨论】:
我认为它可能不得不这样。感谢标签提示。【参考方案3】:你也可以只设置表格视图的 Content 和 Scroller inset
【讨论】:
【参考方案4】:我在尝试单独显示细节控制器时遇到了类似的问题,请参阅:http://vimeo.com/13054813
问题在于,SplitView 控制器将其自己的变换应用到子控制器,将它们从方向检测循环中取出,这会使山羊大吃一惊,并且对于内置类来说似乎非常“骇人听闻”。 (该视频说明了当您将详细视图设为根视图,然后将其添加回拆分视图并在横向时将拆分视图设为根时会发生什么;您将获得详细视图的双重旋转。)
不幸的是,在尝试调整 SplitViewController 的详细子视图以响应键盘出现/消失时,我再次遇到了这些转换问题。在纵向,一切正常,在横向,它是 fscked。
【讨论】:
【参考方案5】:是的,调整 contentInset 和 scrollIndicatorInsets 是调整 UITableView 大小的便捷方式。 正如Sam Soffes 的answer 发布的那样,我成功地在UITableViewController 中为底部UIToolbar 调整了UITableView 的大小。
【讨论】:
以上是关于在 RootController 上调整 UITableView 的大小的主要内容,如果未能解决你的问题,请参考以下文章
SplitView 中 RootController 视图的位置问题
UIStoryBoard 加载 rootController
AppDelegate 被不同的类访问,来自 RootController.m
如何从第 2 层向下建立 UINavigationController(而不是从 Delegate/RootController 层)
使用 Swift 3 将数据从 Modal Viewcontroller 传递到 rootController(不要 Segue)