如何在 pdfkit swift 中添加圆圈注释?
How to add circle annotation in pdfkit swift?
我正在使用 pdfkit 并添加了具有固定大小和宽度的圆形注释,但我想使用动态高度和宽度进行绘制。这是我的代码:
这里:开始是我的CGPoint,从我开始手指的地方
end 是我结束移动手指的第二个 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 的宽度和高度
- 手指从右上滑到左下 - 画出一半大小的圆圈
- 手指从左下滑动到右上 - 画出一半大小的圆圈
您可以使用此代码在 pdf 页面上绘制圆圈
let size = CGSize(width: abs(point.x - startPoint.x), height: abs(point.y - startPoint.y))
var rect = CGRect(origin: startPoint, size: size)
if point.y - startPoint.y < 0 && point.x - startPoint.x < 0
{
rect = CGRect(origin: point, size: size)
}
else if point.y - startPoint.y > 0 && point.x - startPoint.x < 0
{
rect = CGRect(origin: CGPoint(x: point.x, y: startPoint.y), size: size)
}
else if point.y - startPoint.y < 0 && point.x - startPoint.x > 0
{
rect = CGRect(origin: CGPoint(x: startPoint.x, y: point.y), size: size)
}
let page = docView.currentPage
let pageBounds = page!.bounds(for: .cropBox)
let newAnnotation = PDFAnnotation(bounds: pageBounds, forType: .circle,withProperties:nil)
newAnnotation.setRect(rect, forAnnotationKey: .rect)
newAnnotation.color = UIColor.black
page!.addAnnotation(newAnnotation)
我正在使用 pdfkit 并添加了具有固定大小和宽度的圆形注释,但我想使用动态高度和宽度进行绘制。这是我的代码:
这里:开始是我的CGPoint,从我开始手指的地方 end 是我结束移动手指的第二个 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 的宽度和高度
- 手指从右上滑到左下 - 画出一半大小的圆圈
- 手指从左下滑动到右上 - 画出一半大小的圆圈
您可以使用此代码在 pdf 页面上绘制圆圈
let size = CGSize(width: abs(point.x - startPoint.x), height: abs(point.y - startPoint.y))
var rect = CGRect(origin: startPoint, size: size)
if point.y - startPoint.y < 0 && point.x - startPoint.x < 0
{
rect = CGRect(origin: point, size: size)
}
else if point.y - startPoint.y > 0 && point.x - startPoint.x < 0
{
rect = CGRect(origin: CGPoint(x: point.x, y: startPoint.y), size: size)
}
else if point.y - startPoint.y < 0 && point.x - startPoint.x > 0
{
rect = CGRect(origin: CGPoint(x: startPoint.x, y: point.y), size: size)
}
let page = docView.currentPage
let pageBounds = page!.bounds(for: .cropBox)
let newAnnotation = PDFAnnotation(bounds: pageBounds, forType: .circle,withProperties:nil)
newAnnotation.setRect(rect, forAnnotationKey: .rect)
newAnnotation.color = UIColor.black
page!.addAnnotation(newAnnotation)