У меня есть UIView, который должен содержать CALayer. По какой-то причине (я, должно быть, не понял, как полностью работают CALayer и UIView), он не работает должным образом.
Вот как это выглядит:
![circular view](https://i.stack.imgur.com/504PW.png)
Это мой код для позиционирования вида:
let xPosition = self.viewCenterAnimation.frame.origin.x
let yPosition = self.viewCenterAnimation.frame.origin.y
let position = CGPoint(x: xPosition, y: yPosition)
self.circularProgressBar = CircularProgressBar(radius: 50, position: position, innerTrackColor: UIColor.watermelonDark(), outerTrackColor: UIColor.watermelonLight(), lineWidth: 20)
self.viewCenterAnimation.layer.addSublayer(self.circularProgressBar)
Это код для создания CALayer и пути:
public init(radius: CGFloat, position: CGPoint, innerTrackColor: UIColor, outerTrackColor: UIColor, lineWidth: CGFloat) {
super.init()
circularPath = UIBezierPath(arcCenter: .zero, radius: radius, startAngle: 0, endAngle: .pi * 2, clockwise: true)
outerTrackShapeLayer = CAShapeLayer()
outerTrackShapeLayer.path = circularPath.cgPath
outerTrackShapeLayer.position = position
outerTrackShapeLayer.strokeColor = outerTrackColor.cgColor
outerTrackShapeLayer.fillColor = UIColor.clear.cgColor
outerTrackShapeLayer.lineWidth = lineWidth
outerTrackShapeLayer.strokeEnd = 1
outerTrackShapeLayer.lineCap = kCALineCapRound
outerTrackShapeLayer.transform = rotateTransformation
addSublayer(outerTrackShapeLayer)
innerTrackShapeLayer = CAShapeLayer()
innerTrackShapeLayer.strokeColor = innerTrackColor.cgColor
innerTrackShapeLayer.position = position
innerTrackShapeLayer.strokeEnd = progress
innerTrackShapeLayer.lineWidth = lineWidth
innerTrackShapeLayer.lineCap = kCALineCapRound
innerTrackShapeLayer.fillColor = UIColor.clear.cgColor
innerTrackShapeLayer.path = circularPath.cgPath
innerTrackShapeLayer.transform = rotateTransformation
addSublayer(innerTrackShapeLayer)
}
Очевидно, я хочу, чтобы круг идеально помещался внутри белого UIView.
Заранее спасибо!