I am drawing a circle in cellForItemAt
method as follows for a particular condition:
if cellState.date == CalendarModel.DUE_DATE {
let shapeLayer = CAShapeLayer()
let circlePath = UIBezierPath(arcCenter: CGPoint(x: (cell.layer.frame.size.width)/2,y: (cell.layer.frame.size.height)/2), radius: CGFloat(15), startAngle: CGFloat(0), endAngle:CGFloat(Double.pi * 2), clockwise: true)
shapeLayer.path = circlePath.cgPath
//change the fill color
shapeLayer.fillColor = UIColor.clear.cgColor
//you can change the stroke color
shapeLayer.strokeColor = UIColor.FlatColor.Blue.midnightBlue.cgColor
//you can change the line width
shapeLayer.lineWidth = 1.0
cell.layer.addSublayer(shapeLayer)
}
The circle keeps repeating randomly. I'm trying the following code in willDisplayCell
however it removes all content from the cell.
func calendar(_ calendar: JTAppleCalendarView, willDisplay cell: JTAppleCell, forItemAt date: Date, cellState: CellState, indexPath: IndexPath) {
// comment
cell.layer.sublayers?.forEach { $0.removeFromSuperlayer() }
}
How to specifically remove the shapeLayer
that was added in cellForItemAt
? Any help would be greatly appreciated. Thank you.
as per @Paulw11 's suggestion, I subclassed the
JTAppleCell
and added a variable as follows:Then added another method in the same
JTAppleCell
's subclass as below:in
cellForItemAt
I added the following lines after dequeueing the cells in an else block:Thank you @Paulw11 the above solution worked for me.