使用这个例子我试图在我的UITableView中添加一个虚线边框。
Trying to draw dashed border for UITableViewCell
但它不起作用。它没有显示任何内容。
func addDashedBottomBorder(to cell: UITableViewCell) {
let color = UIColor.black.cgColor
let shapeLayer:CAShapeLayer = CAShapeLayer()
let frameSize = cell.frame.size
let shapeRect = CGRect(x: 0, y: 0, width: frameSize.width, height: 0)
shapeLayer.bounds = shapeRect
shapeLayer.position = CGPoint(x: frameSize.width/2, y: frameSize.height)
shapeLayer.fillColor = UIColor.clear.cgColor
shapeLayer.strokeColor = color
shapeLayer.lineWidth = 2.0
shapeLayer.lineJoin = kCALineJoinRound
shapeLayer.lineDashPattern = [9,6]
shapeLayer.path = UIBezierPath(roundedRect: CGRect(x: 0, y: shapeRect.height, width: shapeRect.width, height: 0), cornerRadius: 0).cgPath
cell.layer.addSublayer(shapeLayer)
}
我在cellForRowAt
中使用此方法,但它在viewDidLoad
,table.separatorStyle = .none
中没有显示任何内容。
答案 0 :(得分:0)
从您的代码的以下两行:
shapeLayer.lineJoin = kCALineJoinRound
shapeLayer.path = UIBezierPath(roundedRect: CGRect(x: 0, y: shapeRect.height, width: shapeRect.width, height: 0), cornerRadius: 0).cgPath
kCALineJoinRound
正在制作上下虚线,但由于height
的{{1}}为0,它们重叠。所以,将代码更新为:
UIBezierPath
它会隐藏下面一行,你会得到想要的结果。
最佳解决方案:
您可以通过向 shapeLayer.path = UIBezierPath(roundedRect: CGRect(x: 0, y: shapeRect.height, width: shapeRect.width, height: 1), cornerRadius: 0).cgPath
提供lineDashPhase
来纠正错误,而不是隐藏下划线,如下:
CAShapeLayer
收到的信息是: