UITableView Space 3 UITableViewCells 均匀分布在整个设备框架上

Posted

技术标签:

【中文标题】UITableView Space 3 UITableViewCells 均匀分布在整个设备框架上【英文标题】:UITableView Space 3 UITableViewCells across entire device frame evenly 【发布时间】:2012-06-22 14:06:11 【问题描述】:

我正在编写一个具有嵌套 UITableViews 的视图的应用程序。外部 UITableView 的单元格中的 UITableViews 旋转 90 度,以便它们水平滚动。主 UITableView 中的 UITableViewCell 属于 Horizo​​ntalTableViewCell 类。

                    UITableView
--------------------------------------------------    
|                |               |               |
|                |               |               | HorizontalTableView
|       >        |       >       |       >       | (contained inside
|                |               |               | UITableView's 
|                |               |               | UITableViewCell)
--------------------------------------------------
|                |               |               |
|                |               |               |
|       >        |       >       |       >       |   |
|                |               |               |  \ /
|                |               |               |   "
--------------------------------------------------
|                |               |               |
|                |               |               |
|       >        |       >       |       >       |
|                |               |               |
|                |               |               |
--------------------------------------------------      

在纵向模式下,我通过在 initWithFrame: 方法中将 Horizo​​ntalTableView 的宽度设置为屏幕宽度,使内容均匀分布。

我想增加 Horizo​​ntalTableView 的单元格的单元格填充,以便当设备旋转到横向模式时,调整 3 个单元格的大小以适应整个屏幕,每个单元格占用相同的空间。

然而,我似乎能达到的最好效果是一个具有相同纵向宽度的 Horizo​​ntalTableView,但通过以下位掩码在屏幕中居中(来自 Horizo​​ntalTableViewCell 的实现文件):

self.horizontalTableView.autoresizingMask = 
    UIViewAutoresizingFlexibleLeftMargin | 
    UIViewAutoresizingFlexibleRightMargin;

这会在 Horizo​​ntalTableView 的两侧产生较大的边距,有效地使单元格居中,但单个单元格的填充保持不变。

对我将如何做这件事有任何想法吗?

(请注意,如果使用以下位掩码,则单元格会飞出“通过水平表视图单元的顶部”的视图,并且无法再次看到,即使设备旋转回纵向模式也是如此)。

self.horizontalTableView.autoresizingMask = UIViewAutoresizingFlexibleWidth; 

【问题讨论】:

【参考方案1】:

我能想到的唯一方法是为横向模式创建另一个视图。将数据放入 holder 对象中,加载新视图,然后从 holder 中重新加载数据。

【讨论】:

这就是我所害怕的……我花了整整三个小时在这上面,却没有得到任何产生预期效果的东西。不过,希望它不会变成这样。 我实际上有一个应用程序,其中我在 tableviewcells 中有 tableviews。让它旋转的工作量太大了,所以我只是禁用了旋转。您可能想尝试这种策略,除非由于某种原因轮换是完全不可缺少的。 让它旋转并不太困难,但它看起来不像 AS NICE 那样......我可以让它保持原样,如果有没有很好的方法来管理旋转时表格单元格的属性,因为我不想限制用户操纵应用程序方向的能力。 等等,你在使用自定义单元格吗?如果不是,那么也许您可以尝试制作自己的单元格并设置自动调整大小的属性。 我在主 UITableView 的单元格中为 TableView 使用自定义单元格,是的。

以上是关于UITableView Space 3 UITableViewCells 均匀分布在整个设备框架上的主要内容,如果未能解决你的问题,请参考以下文章

UITableView的contentSize

UITableView 和单元格重用

UItableview全部属性方法以及代理方法执行顺序

iOS UITableView在过滤时滚动插入

由于 NSManagedObjectContext 保存而更新 NSFetchedResultsController 时延迟 UITableView 更新

UITableView创建步骤与常用数据源方法