Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 是否可以更改不同tableview单元格的分隔符宽度?_Swift_Xcode_Uitableview_Uicollectionview - Fatal编程技术网

Swift 是否可以更改不同tableview单元格的分隔符宽度?

Swift 是否可以更改不同tableview单元格的分隔符宽度?,swift,xcode,uitableview,uicollectionview,Swift,Xcode,Uitableview,Uicollectionview,如果之前有人问过这个问题,或者答案很明显,我会提前道歉——我只是很难找到这个问题的好答案 在tableview中,是否可以为不同的单元格使用不同的分隔符宽度? 我想让前几个单元格具有较短的分隔符宽度,最后一个单元格具有顶部和底部分隔符的边到边 示例图像: 我可以通过在情节提要中将分隔符样式设置为“无”,然后在每个单元格中添加一个浅灰色UIView作为分隔符(在cellForRow方法内部)来伪造所需的外观。但是,如果可能的话,我希望避免这种情况 是否有更好的方法更改不同单元格的分隔符宽度? 注

如果之前有人问过这个问题,或者答案很明显,我会提前道歉——我只是很难找到这个问题的好答案

在tableview中,是否可以为不同的单元格使用不同的分隔符宽度? 我想让前几个单元格具有较短的分隔符宽度,最后一个单元格具有顶部和底部分隔符的边到边

示例图像:

我可以通过在情节提要中将分隔符样式设置为“无”,然后在每个单元格中添加一个浅灰色UIView作为分隔符(在cellForRow方法内部)来伪造所需的外观。但是,如果可能的话,我希望避免这种情况

是否有更好的方法更改不同单元格的分隔符宽度?
注意:我使用的是Swift

您可以使用
单元格。separatorInset
更改分隔符的尺寸

例如,这会为前三个单元格绘制一个较短的分隔符:

override func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) {
    if indexPath.row < 3 {
        cell.separatorInset = UIEdgeInsetsMake(0, 30, 0, 11) // shorter separator
    else {
        cell.separatorInset = UIEdgeInsetsMake(0, 3, 0, 11) // longer separator
    }
}
重写func tableView(tableView:UITableView,willDisplay单元格:UITableViewCell,forRowAt indexPath:indexPath){
如果indexath.row<3{
cell.separatorInset=UIEdgeInsetsMake(0,30,0,11)//较短的分隔符
否则{
cell.separatorInset=UIEdgeInsetsMake(0,3,0,11)//更长的分隔符
}
}
willDisplayCell
文档:

表视图在使用单元格绘制行之前将此消息发送给其委托,从而允许委托在显示单元格对象之前自定义单元格对象。此方法使委托有机会覆盖表视图先前设置的基于状态的属性,如选择和背景色。委托返回后,“表格视图”仅设置alpha和frame属性,然后仅设置行滑入或滑出时的动画


您是否尝试过使用
cell.separatorInset
?最好的方法可能是在
willDisplayCell
方法中,并根据需要为特定的
indexPath.row
设置inset。非常感谢koen!您的解决方案非常有效。请问–您为什么喜欢将其放置在willDisplay单元格中她比在牢房里更重要?