如何调整UITableView中原型单元格的左边距?
如果我创build了一个UITableViewController
,例如通过File→New Project …→iOS→Master-Detail Application在Xcode中创build一个UITableView
并创build一个原型单元格。
生成的视图层次是:
在单元格的内容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提到的, UITableViewCell
的indentation
属性是缩进内置单元格样式中文本标签的好方法。 只要做这样的事情来实现好的左边距:
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 }