Это может быть не лучшая реализация, поэтому я открыт для других предложений.
Я хочу создать UICollectionView
с пользовательским UIView
, который dr aws круг (похож на круг активности часов. Проблема, с которой я сталкиваюсь, заключается в том, что в каждом cell
после первых представленных (при необходимости прокрутки) круг рисуется в верхнем левом круге вместо того, чтобы быть центрированным, неправильного размера, и я ' м не уверен, что мне нужно изменить.
UIView
класс
let shapeLayer = CAShapeLayer()
override func draw(_ rect: CGRect) {
var path = UIBezierPath()
path = UIBezierPath(arcCenter: self.center, radius: (self.frame.height / 2)-10, startAngle: -CGFloat.pi / 2, endAngle: (2 * CGFloat.pi - CGFloat.pi / 2), clockwise: true)
shapeLayer.path = path.cgPath
shapeLayer.lineWidth = 6
shapeLayer.fillColor = UIColor.clear.cgColor
shapeLayer.lineCap = .round
shapeLayer.strokeEnd = 0
self.layer.addSublayer(shapeLayer)
}
func setProgress(progress: NSNumber) {
let basicAnimation = CABasicAnimation(keyPath: "strokeEnd")
basicAnimation.toValue = progress
basicAnimation.duration = 1
basicAnimation.fillMode = .forwards
basicAnimation.isRemovedOnCompletion = false
shapeLayer.add(basicAnimation, forKey: "setProgress")
}
func setColor(color: UIColor) {
shapeLayer.strokeColor = color.cgColor
}
UICollectionViewCell
@IBOutlet weak var view: CustomViewClass!
var key: String!
Я подключаю CustomViewClass
к UIView с помощью раскадровка.