Как мне сделать UIBezierPath, который начинает рисовать из центра и расширяется влево и вправо?
Мое текущее решение не использует UIBezierPath, а скорее UIView внутри другого UIView.Детский вид центрируется внутри его родителя, и я настраиваю ширину дочернего элемента, когда мне нужно его расширить.Однако это решение далеко от совершенства, поскольку представление находится внутри UIStackView, а представление стека находится в ячейке UICollectionView, и иногда оно неправильно определяет ширину.
override func layoutSubviews() {
super.layoutSubviews()
progressView.cornerRadius = cornerRadius
clipsToBounds = true
addSubview(progressView)
NSLayoutConstraint.activate([
progressView.topAnchor.constraint(equalTo: topAnchor),
progressView.bottomAnchor.constraint(equalTo: bottomAnchor),
progressView.centerXAnchor.constraint(equalTo: centerXAnchor)
])
let width = frame.width
let finalProgress = CGFloat(progress) * width
let widthConstraint = progressView.widthAnchor.constraint(equalToConstant: finalProgress)
widthConstraint.priority = UILayoutPriority(rawValue: 999)
widthConstraint.isActive = true
}
прогресс - это свойство классатип double, и когда он установлен, я вызываю layoutIfNeeded.
Я также пытался вызвать setNeedsLayout и layoutIfNeeded, но это не решает проблему.SetNeedsDisplay и invalidateIntrinzicSize также не работают.
Теперь я хотел бы сделать это, используя путь Безье, но проблема в том, что он начинается с заданной точки и рисует слева направо.Вопрос в том, как мне сделать UIBezierPath по центру, и когда я увеличиваю ширину, он расширяется (остается в центре)
Вот изображение того, чего я хочу достичь.