如何减少/删除分组 UITableView 中的左/右手边距?

Posted

技术标签:

【中文标题】如何减少/删除分组 UITableView 中的左/右手边距?【英文标题】:how to reduce/remove the left/right hand margin in a grouped UITableView? 【发布时间】:2011-09-06 22:35:22 【问题描述】:

有没有办法在不定义自定义视图的情况下做到这一点,即直接使用 UITableViewController?

我不是在这里询问单元格之间的空间,而是您看到的单元格左右的空间。

编辑 1:我能澄清一下吗:

我的解决方案中已经有一个自定义 UITableViewCell ("@interface AppointCell : UITableViewCell") 我认为这些自定义 UITableViewCell 的左右区域并非直接来自单元格本身 - 我这样说只是因为当我在单元格周围放置边框时(通过它的层)我可以看到这一点 - 所以因此似乎空间来自 UITableView 本身(而不是单元格) 应该再次指出我正在为表格视图使用 GROUPED 模式

【问题讨论】:

【参考方案1】:

当然;只需调整 UITableView 的框架,使其比其父视图宽一点,并在其左边界的左侧(换句话说,在负 X 方向上)。

【讨论】:

这听起来是正确的方法。您可以尝试将该行放入您的-viewWillAppear:animated:;你的视图在第一次加载时可能没有正确设置它的大小,但是当你的控制器收到它即将出现的通知时它肯定应该正确设置。 这种方法似乎不起作用,至少现在在 ios 7 和 8 中是这样。人们正在使用一种新方法来实现这一点吗? 在 iOS 7 及更高版本中,分组的表格视图在其单元格的一侧没有边距。你想做什么?【参考方案2】:

我相信您必须为您的表格创建一个自定义单元格视图,该表格在左侧和右侧都有填充。

【讨论】:

啊,这是一个有趣的问题!我想知道您是否可以在 tableview 的 CGRect Frame 上调整大小... 是的...我可以试试这个,看看效果如何【参考方案3】:

您还可以使单元格本身更宽一些。将此方法添加到您的 UITableViewCell 子类中。

- (void)setFrame:(CGRect)frame 
    frame.origin.x -= marginOffset;
    frame.size.width += 2 * marginOffset;
    [super setFrame:frame];

我相信偏移量应该是 9 点。附带说明:如果您为单元格设置自定义背景,您可能还必须将其设置为 selectedBackground。

【讨论】:

【参考方案4】:

您可以通过扩展 UITableViewCell 来使用自定义单元格。我建议你看看http://www.e-string.com/content/custom-uitableviewcells-interface-builder

【讨论】:

以上是关于如何减少/删除分组 UITableView 中的左/右手边距?的主要内容,如果未能解决你的问题,请参考以下文章

如何从分组的 UITableView 单元格中删除边框?

在 Swift 中删除分组 UITableView 上方的空间

删除按钮位于 UITableView 样式分组单元格背景之外

从 uitableview 隐藏或删除部分

分组 UITableview 删除外部分隔线

删除插入分组 UITableView 上方的空间