Я использую pdfkit и добавил круговую аннотацию с фиксированным размером и шириной, но я хочу рисовать с динамической высотой и шириной. Вот мой код:
Здесь: начало — это моя CGPoint, с которой я начал движение пальца, конец — это вторая CGPoint, где я закончил движение пальца. Используется start.x и end.y
let circle = PDFAnnotation(bounds: CGRect(x: start.x, y: end.y, width: 100, height: 100), forType: .circle, withProperties: nil)
circle.color = hexStringToUIColor(hex: "#0000FF")
let border = PDFBorder()
border.lineWidth = 3.0
circle.border = border
page?.addAnnotation(circle)
Это второй подход к рисованию круга с динамической высотой и шириной:
Вот код:
let centerX = (start!.x + end!.x)/2
let centerY = (start!.y + end!.y)/2
var distance = (end!.x - centerX) * 2
if distance < 0 {
distance = (start!.x - centerX) * 2
}
let halfDistance = distance/2
self.annotation = PDFAnnotation(bounds: CGRect(x: centerX - halfDistance, y: centerY - halfDistance, width: distance, height: distance), forType: .circle, withProperties: nil)
let page = self.pdfview.currentPage
annotation.color = hexStringToUIColor(hex: "#0000FF")
let border = PDFBorder()
border.lineWidth = 3.0
annotation.border = border
page?.addAnnotation(annotation)
Второй подход рисует круг с динамической высотой и шириной, но не так, как я хочу. если я нарисую круг, их будет 8 случаев:
- Палец провел слева направо - он рисует круг в правильном положении.
- Палец провел справа налево - он рисует круг в правильном положении.
- Проведите пальцем сверху слева вниз справа — он нарисует круг вдвое меньшего размера.
- Проведите пальцем снизу справа вверх влево — он нарисует круг вдвое меньшего размера.
- Проведите пальцем сверху вниз — значение радиуса круга равно 2 или 3 ширине и высоте
- Проведите пальцем снизу вверх — значение радиуса круга равно 2 или 3 ширине и высоте
- Проведите пальцем сверху справа вниз слева — он нарисует круг вдвое меньшего размера.
- Проведите пальцем снизу слева направо вверх — он нарисует круг вдвое меньшего размера.