如何调整UITableView中原型单元格的左边距?

如果我创build了一个UITableViewController ,例如通过File→New Project …→iOS→Master-Detail Application在Xcode中创build一个UITableView并创build一个原型单元格。

生成的视图层次是:

UITableViewController视图层次结构

在单元格的内容UIView左边缘和“标题”文本的UILabel元素之间自动创build左边的“边距”,如下面的橙色所示。

原型细胞缺口

这会在运行时在设备的屏幕边缘和UILabel文本之间产生相应的边距:

运行时间差距

那么这个差距的宽度在哪里呢?怎样才能调整呢?

UILabel的Size Inspector中的控件显示为灰色:

在这里输入图像说明

我的首选选项是能够在Interface Builder中设置这个差距的宽度,但是我也想知道这个差距在哪里设置,以及如何通过编程来改变它。

您只需要设置表视图的contentInset属性。 您可以根据您的需要设定价值。

self.tableView.contentInset = UIEdgeInsetsMake(0, -15, 0, 0);

输出结果

iOS 8开始,可以使用cell属性layoutMargins 。 所以调整单元格边距的正确方法是在tableView:cellForRowAtIndexPath或者在你的自定义UITableViewCell中设置这个属性:

 override func awakeFromNib() { super.awakeFromNib() self.layoutMargins = UIEdgeInsetsZero //or UIEdgeInsetsMake(top, left, bottom, right) self.separatorInset = UIEdgeInsetsZero //if you also want to adjust separatorInset } 

我希望这可以帮助别人。

转到Main.storyboard>selectUITableViewCell>属性检查器。 将“分隔符”下拉列表从“默认插入”更改为“自定义插入”。 将左侧插入从15更改为0

在这里输入图像说明

在TableView的“属性检查器”中,将Left = 0的Separator Insets设置为“Custom”。这就是你所要做的!

只需在您的代码中添加方法,如下面的链接所述

如何消除UITableView左侧的边距,而不会在右侧产生间隙?

我想提的方法是

 -(void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath{ if ([tableView respondsToSelector:@selector(setSeparatorInset:)]) { [tableView setSeparatorInset:UIEdgeInsetsZero]; } if ([tableView respondsToSelector:@selector(setLayoutMargins:)]) { [tableView setLayoutMargins:UIEdgeInsetsZero]; } if ([tableView respondsToSelector:@selector(setLayoutMargins:)]) { cell.preservesSuperviewLayoutMargins = NO; [cell setLayoutMargins:UIEdgeInsetsZero]; } if ([cell respondsToSelector:@selector(setSeparatorInset:)]){ [cell setSeparatorInset:UIEdgeInsetsZero]; } } 

正如WTIFS提到的, UITableViewCellindentation属性是缩进内置单元格样式中文本标签的好方法。 只要做这样的事情来实现好的左边距:

 cell.indentationLevel = 2; 

但是,这对imageView不起作用。

我想我只是想出了一个简单的解决scheme。 大声笑。

最好的答案有一些问题…它减less了左侧的差距,但造成了一个正确的差距。

我在界面生成器中使用了约束

首先在表格视图中添加一个-15左边距约束

然后添加一些缩进到表格单元格,使内容看起来更好。


这里有一些一步一步的图片:

添加约束。 请记住取消选中“最近的邻居间隔”。

添加约束。请记住取消选中“最近的邻居间隔”。

表单元格将向左移动。 但似乎太接近保证金。

添加约束后

所以select表格单元格,并在右侧区域添加一些缩进。

添加一些缩进

如果只想改变单元格的文本标签的左边距,那么根据你想要的填充来改变Horizontal Space Constraint 'Constant'为16或8(这是在nib文件中)。 如果不能进入“常量”select标签,在FrameRectangle视图中更改x坐标,然后单击左侧的约束引脚) 在这里输入图像说明

这是Chetan答案的迅速版本:

 override func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) { tableView.separatorInset = UIEdgeInsets.zero tableView.layoutMargins = UIEdgeInsets.zero cell.preservesSuperviewLayoutMargins = false cell.layoutMargins = UIEdgeInsets.zero cell.separatorInset = UIEdgeInsets.zero }