[swift]UITableViewCell 缘左和右

发布时间: 2017/3/6 23:20:03
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我想要这样的细胞。我使用 swift

但我不知道如何添加单元格的左、 右两边的边距。

你知道如何去做同样的边缘效应轮节吗?(当有几个单元格时,在接触边缘不舍入)enter image description here

当我使用 contentInset:

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

enter image description here

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

enter image description here

解决方法 1:

从你的屏幕截图,它看起来像你想要做这与分组的表视图。要做到这一点你应该使用 UITableView 添加到 UIViewControllerUITableViewController

若要设置插图只应设置约束/帧的表视图以略在从左和右边缘,并将您的视图的背景颜色设置为UIColor.groupTableViewBackgroundColor()

然后在 cellForRowAtIndexPath 你可以这样说︰

    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {

        let cornerRadius:CGFloat = 5.0

        let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath)

        // Configure your cell

        let sectionCount = tableView.numberOfRowsInSection(indexPath.section)
        let shapeLayer = CAShapeLayer()
        cell.layer.mask = nil
        if sectionCount > 1
        {

            switch indexPath.row {
            case 0:
                var bounds = cell.bounds
                bounds.origin.y += 1.0
                let bezierPath = UIBezierPath(roundedRect: bounds, byRoundingCorners: [.TopLeft, .TopRight], cornerRadii: CGSize(width: cornerRadius,height: cornerRadius))
                shapeLayer.path = bezierPath.CGPath
                cell.layer.mask = shapeLayer
            case sectionCount - 1:
                var bounds = cell.bounds
                bounds.size.height -= 1.0
                let bezierPath = UIBezierPath(roundedRect: bounds, byRoundingCorners: [.BottomLeft, .BottomRight], cornerRadii: CGSize(width: cornerRadius,height: cornerRadius))
                shapeLayer.path = bezierPath.CGPath
                cell.layer.mask = shapeLayer
            default:
                break
            }
            return cell
        }
        else
        {
            let bezierPath = UIBezierPath(roundedRect: CGRectInset(cell.bounds,0.0,2.0), cornerRadius: cornerRadius)
            shapeLayer.path = bezierPath.CGPath
            cell.layer.mask = shapeLayer
            return cell
        }
    }

你只是敷上面膜,基于索引路径的行和第节中的行数。如果你有动态大小细胞您可能需要移动应用到面具你 UITableViewCell 子类。

您应该得到类似的结果︰

enter image description here

赞助商