0
Я хочу добавить UIImage в последний момент UIBezierPath, как на картинке ниже:UIImage в последней точке UIBezierPath
Код:
let consume = 0.25
let x = self.frame.size.width/2.0
let y = self.frame.size.height/2.0
let radius = (frame.size.width - 10)/2.0
let startAngle: CGFloat = CGFloat(M_PI * (-1/2))
let endAngle = CGFloat(M_PI * 2 - M_PI/2 * consume)
let circlePath = UIBezierPath(arcCenter: CGPoint(x: x, y: y), radius: radius, startAngle: startAngle, endAngle: endAngle, clockwise: false)
circleLayer = CAShapeLayer()
circleLayer.path = circlePath.cgPath
circleLayer.fillColor = UIColor.clear.cgColor
circleLayer.strokeColor = UIColor.red.cgColor
circleLayer.lineWidth = 8.0;
let image = UIImage(named: "myCoolImage")
let imageView = UIImageView(image: image)
// coordX and coordY must be at last point of UIBezierPath
imageView.frame = CGRect(x: coordX, y: coordY, width: 20.0, height: 20.0)
self.addSubview(imageView)
Я попытался следующие:
let coordX: CGFloat = cos(endAngle) * radius
let coordY: CGFloat = sin(endAngle) * radius
Результат: Positive coordX and coordY
Основная проблема заключается в том, как рассчитать координаты и координаты.
В коде, которое вы использовали, что не так? Какой результат вы сейчас видите? Кажется, что все, что вам не хватает, это отрицательное смещение для размера изображения (так, местоположение -x, -y для размера изображения). – shortstuffsushi
Я обновил вопрос с моим текущим результатом. Если я устанавливаю отрицательное смещение, мое изображение выходит из экрана. –
Вы не показываете здесь, где вы меняете координаты и координаты, чтобы дать вам этот результат. Обратите внимание, что эти значения должны основываться на x и y_, поэтому это x/y (центр) +/- cos/sin (угол). Можете ли вы показать обновленный код с установленными переменными и отметив, что они должны быть основаны на х/у? – shortstuffsushi