如何在Swift中去除UITableView左侧的偏移量

7

我找到了一些关于在iOS7中去除UITableView偏移的问题和答案,这里有一个链接:如何修复iOS 7上的UITableView分隔线?

我想知道是否有人找到了正确的函数来去除内部边距。类似于这个Objective-C的答案。

if ([tableView respondsToSelector:@selector(setSeparatorInset:)]) {
    [tableView setSeparatorInset:UIEdgeInsetsZero];
}

可能是重复的问题:iOS 8 UITableView separator inset 0 not working - swiftBoy
5个回答

14
你可以直接设置属性:tableView.separatorInset = UIEdgeInsetsZero

1
此帖子因过于简短/仅包含代码而被自动标记为低质量。您能否通过添加一些解释性文本来扩展它,以说明它如何解决问题? - gung - Reinstate Monica
2
嘿,这通常应该适用于我拥有的TableView,但是我的TableView仍然包含边框。可能是某些东西覆盖了我的设置。 - johnnywu

9
与 Objective-C 示例类似,但转换为 Swift。我自己遇到了一些麻烦。如果您在 UITableView 中使用此代码,则可以正常工作。如果您在 UITableViewController 中使用,则需要将 self.tableView 替换为 self。
// iOS 7
if(self.respondsToSelector(Selector("setSeparatorInset:"))){
    self.separatorInset = UIEdgeInsetsZero
}

// iOS 8
if(self.respondsToSelector(Selector("setLayoutMargins:"))){
    self.layoutMargins = UIEdgeInsetsZero;
}

对于iOS 8以上版本的手机(仅限iOS 8),请将以下代码放置在下面的函数中:

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath)

获取单元格,并设置以下属性:
// iOS 8
if(cell.respondsToSelector(Selector("setLayoutMargins:"))){
    cell.layoutMargins = UIEdgeInsetsZero;
}

3

将以下代码放在viewDidLoad()中:

tableView.layoutMargins = UIEdgeInsetsZero
tableView.separatorInset = UIEdgeInsetsZero

现在找到你的cellForRowAtIndexPath方法并添加以下内容:
cell.layoutMargins = UIEdgeInsetsZero

现在,“.zero”语法很流行。...

    tableView.layoutMargins = UIEdgeInsets.zero
    tableView.separatorInset = UIEdgeInsets.zero

    cell.layoutMargins = UIEdgeInsets.zero

1

对于Swift 3,只需输入:

tableView.separatorInset = .zero

1
你可以通过控制台修改 "默认插入" 为 "自定义插入" 来完成此操作。
  1. 在表视图单元格中点击滑块图标
  2. 在表视图单元格下找到分隔符所在的 "默认插入"
  3. 点击下拉菜单,选择 "自定义插入"
  4. 选择左右数字(我将我的设置为0,以便边缘到边缘分隔符)

显示默认设置的图片

显示自定义设置的图片


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接