Swift3 如何在pdfkit swift中添加圆注释?

Swift3 如何在pdfkit swift中添加圆注释?,swift3,annotations,pdfkit,wwdc,pdf-annotations,Swift3,Annotations,Pdfkit,Wwdc,Pdf Annotations,我使用pdfkit并添加了具有固定大小和宽度的圆形注释,但我希望使用动态高度和宽度绘制。这是我的密码: 这里:开始是我开始指指点点的地方 结束是我结束移动手指的第二个点。 使用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 =

我使用pdfkit并添加了具有固定大小和宽度的圆形注释,但我希望使用动态高度和宽度绘制。这是我的密码:

这里:开始是我开始指指点点的地方 结束是我结束移动手指的第二个点。 使用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)
让centerX=(开始!.x+结束!.x)/2
设centerY=(开始!.y+结束!.y)/2
变量距离=(结束!.x-中心x)*2
如果距离<0{
距离=(开始!.x-中心x)*2
}
设半距离=距离/2
self.annotation=PDFanRotation(边界:CGRect(x:centerX-半距离,y:centerY-半距离,宽度:距离,高度:距离),forType:。圆圈,属性:nil)
让page=self.pdfview.currentPage
annotation.color=hexStringToUIColor(十六进制:#0000FF)
let border=PDFBorder()
border.lineWidth=3.0
annotation.border=边框
第页?.addAnnotation(注释)
第二种方法使用动态高度和宽度绘制圆形,但不是我想要的。如果我画一个圆圈,它们是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)
    
    let size=CGSize(宽度:abs(point.x-startPoint.x),高度:abs(point.y-startPoint.y))
    var rect=CGRect(原点:起始点,大小:大小)
    如果point.y-startPoint.y<0&&point.x-startPoint.x<0
    {
    rect=CGRect(原点:点,大小:大小)
    }
    否则,如果point.y-startPoint.y>0&&point.x-startPoint.x<0
    {
    rect=CGRect(原点:CGPoint(x:point.x,y:startPoint.y),大小:size)
    }
    否则,如果point.y-startPoint.y<0&&point.x-startPoint.x>0
    {
    rect=CGRect(原点:CGPoint(x:startPoint.x,y:point.y),大小:size)
    }
    让page=docView.currentPage
    让pageBounds=page!。边界(用于:.cropBox)
    让newAnnotation=PDFAnnotation(边界:pageBounds,forType:.circle,withProperties:nil)
    newAnnotation.setRect(rect,forAnnotationKey:.rect)
    newAnnotation.color=UIColor.black
    页addAnnotation(newAnnotation)
    
    您可以使用此代码在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)
    
    let size=CGSize(宽度:abs(point.x-startPoint.x),高度:abs(point.y-startPoint.y))
    var rect=CGRect(原点:起始点,大小:大小)
    如果point.y-startPoint.y<0&&point.x-startPoint.x<0
    {
    rect=CGRect(原点:点,大小:大小)
    }
    否则,如果point.y-startPoint.y>0&&point.x-startPoint.x<0
    {
    rect=CGRect(原点:CGPoint(x:point.x,y:startPoint.y),大小:size)
    }
    否则,如果point.y-startPoint.y<0&&point.x-startPoint.x>0
    {
    rect=CGRect(原点:CGPoint(x:startPoint.x,y:point.y),大小:size)
    }
    让page=docView.currentPage
    让pageBounds=page!。边界(用于:.cropBox)
    让newAnnotation=PDFAnnotation(边界:pageBounds,forType:.circle,withProperties:nil)
    newAnnotation.setRect(rect,forAnnotationKey:.rect)
    newAnnotation.color=UIColor.black
    页addAnnotation(newAnnotation)