分组UITableView和水平边距

时间:2012-07-09 16:37:27

标签: ios ipad uitableview autosize

我有一个分组的UITableView,它的设计在iPhone的纵向模式下看起来很漂亮。它的单元子视图具有自动调整设置,以便它们在横向模式下伸展,但这使得它在美学上不那么令人愉悦 - 细胞看起来对于它们的内容来说太宽了。

我现在正在制作一款通用应用程序,但在iPad上,自动调整会导致更多的拉伸,看起来是不可接受的。

如果我可以让UITableView的单元格组具有固定的宽度(或最大宽度),或者如果我能以某种方式控制水平边距,那将是理想的。

在UITableView中没有找到对此的支持,我已经做了一些快速的尝试,在子类化它以限制它在布局时的大小,并且作为替代方案,引入容器视图以使UITableView仅垂直自动调整大小。这两种方法都有效但会产生新的问题:在边距中滑动时滚动不起作用,我现在被迫使UITableView的背景透明(这违背了Apple的建议),因为现在UITableView的框架之间存在背景的不连续性。边缘。

有没有人找到解决我问题的技巧(即约束UITableView中组的宽度,导致边距扩展以填充视图的宽度),或者是一个开源解决方案?

2 个答案:

答案 0 :(得分:5)

好消息!我终于找到了一种方法,只需很少的代码更改即可实现这一目标:

答案 1 :(得分:0)

您始终可以保留标准表格视图,并为表格视图单元格提供透明边的自定义背景,以使它们看起来比它们小。

Cocoa With Love在这里有一篇很棒的文章:Easy custom UITableView drawing

本文的基本要点是,你需要制作六种不同版本的背景,并在tableView:cellForRowAtIndexPath:要求细胞时提供正确的背景。您将需要一个在顶部有圆角(一个部分的第一行),一个在底部有圆角(对于一个部分的底行),一个有四个角的圆角(当只有一个时)该部分中的一行)。那么你将需要相同的三个,但是为每行的“选定”版本定制。