绘制一个单元格的UITableView给出视觉错误

时间:2018-07-22 02:25:12

标签: ios swift xcode uitableview

我编写了一个代码来在UITableView中绘制卡片,每张卡片需要自己绘制,并在示例中具有自定义的rowheight,以240高度绘制2张卡片,高度为240/2的其他8张卡片。

我为您提供了问题的屏幕:

最后一张但一张卡片的设计很奇怪。当我打印框架的边界时,它显示出与其他框架相同的大小...

我将您的验证码提供给您:

func drawBasiqCard() -> CGFloat{
    if(cardView.subviews.count == 0){
        self.addSubview(cardView)
        cardView.frame = CGRect(marginCardWidth,
                                marginCardHeight,
                                self.bounds.size.width - (marginCardWidth*2),
                                basiqCardtHeight - (marginCardHeight*2))
        cardView.layer.cornerRadius = 10
        print(cardView.bounds.size.height)
    }
    if(self.ShadowLayerCard == nil){
        let rounding = CGFloat.init(10)
        let shadowLayer = CAShapeLayer.init()
        self.ShadowLayerCard = shadowLayer
        shadowLayer.path = UIBezierPath.init(roundedRect: cardView.bounds, cornerRadius: rounding).cgPath
        shadowLayer.fillColor = UIColor(rgb: 0xffcc00).cgColor
        shadowLayer.shadowPath = shadowLayer.path
        shadowLayer.shadowColor = UIColor.black.cgColor
        shadowLayer.shadowRadius = 5
        shadowLayer.shadowOpacity = 0.2
        shadowLayer.shadowOffset = CGSize.init(width: 0, height: 0)
        cardView.layer.insertSublayer(shadowLayer, at: 0)
    }
    return cardView.bounds.size.height + (marginCardHeight*2)
}

所以我的问题是,上面的代码很好吗?还是我的错误不在这里?代码在哪里可以产生这种视觉错误? 如果您需要UITableView的代码,我可以向您显示。

感谢您的答复。

1 个答案:

答案 0 :(得分:0)

如果在设置边界之前设置了视图的阴影,则可能会发生这种情况。

您当前的设计不好,您应该在contentView的{​​{1}}上添加阴影,然后在{{1}中更改init的框架(添加一些填充) }。

这里是一个例子:

contentView

它看起来像:

result