iOS9下UITableView设置separatorInset无效

经常有需求隐藏一个section的最后一条分割线, 然而自定义cell有些过于繁琐

我们都知道设置某一条分割线的边距位0

cell.separatorInset = UIEdgeInsetsMake(0, 0, 0, 0)

隐藏某一条cell的分割线

cell.separatorInset = UIEdgeInsetsMake(0, 0, 0, __kScreenWidth/** cell的宽 */)

但是在iOS9下效果颇有不理想

设置边距位0


iOS9下UITableView设置separatorInset无效_第1张图片
Paste_Image.png

隐藏分割线

iOS9下UITableView设置separatorInset无效_第2张图片
Paste_Image.png

解决办法 追加以下方法

    //iOS9 分割线 隐藏或者设置边距0
    func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) {
        
        if cell.responds(to: #selector(setter: UIView.preservesSuperviewLayoutMargins))  {
            cell.preservesSuperviewLayoutMargins = false
        }
        
        if cell.responds(to: #selector(setter: UIView.layoutMargins))  {
            cell.layoutMargins = UIEdgeInsetsMake(0, 0, 0, 0)
        }
    }

你可能感兴趣的:(iOS9下UITableView设置separatorInset无效)