[SWIFT] 사과 PDFKit에 잘못된 하이라이트 주석
SWIFT사과 PDFKit에 잘못된 하이라이트 주석
해결법
-
1.PDFSelection 경계 (forPage : 메소드가 반환 한 사각형은 전체 선택 영역을 충족합니다. 귀하의 경우 최선의 해결책이 아닙니다.
PDFSelection 경계 (forPage : 메소드가 반환 한 사각형은 전체 선택 영역을 충족합니다. 귀하의 경우 최선의 해결책이 아닙니다.
selectionsByLine ()을 시도하고 PDF의 모든 하나의 선택된 라인을 대표하는 모든 RECT에 대한 개별 주석을 추가 할 수 있습니다. 예:
let selections = pdfView.currentSelection?.selectionsByLine() // Simple scenario, assuming your pdf is single-page. guard let page = selections?.first?.pages.first else { return } selections?.forEach({ selection in let highlight = PDFAnnotation(bounds: selection.bounds(for: page), forType: .highlight, withProperties: nil) highlight.endLineStyle = .square highlight.color = UIColor.orange.withAlphaComponent(0.5) page.addAnnotation(highlight) })
-
2.PDFKit 강조 주석의 제안으로 : quadrilateralPoints를 동일한 주석에 다른 라인 하이라이트를 추가 quadrilateralPoints를 사용할 수 있습니다.
PDFKit 강조 주석의 제안으로 : quadrilateralPoints를 동일한 주석에 다른 라인 하이라이트를 추가 quadrilateralPoints를 사용할 수 있습니다.
func highlight() { guard let selection = pdfView.currentSelection, let currentPage = pdfView.currentPage else {return} let selectionBounds = selection.bounds(for: currentPage) let lineSelections = selection.selectionsByLine() let highlightAnnotation = PDFAnnotation(bounds: selectionBounds, forType: PDFAnnotationSubtype.highlight, withProperties: nil) highlightAnnotation.quadrilateralPoints = [NSValue]() for (index, lineSelection) in lineSelections.enumerated() { let n = index * 4 let bounds = lineSelection.bounds(for: pdfView.currentPage!) let convertedBounds = bounds.convert(to: selectionBounds.origin) highlightAnnotation.quadrilateralPoints?.insert(NSValue(cgPoint: convertedBounds.topLeft), at: 0 + n) highlightAnnotation.quadrilateralPoints?.insert(NSValue(cgPoint: convertedBounds.topRight), at: 1 + n) highlightAnnotation.quadrilateralPoints?.insert(NSValue(cgPoint: convertedBounds.bottomLeft), at: 2 + n) highlightAnnotation.quadrilateralPoints?.insert(NSValue(cgPoint: convertedBounds.bottomRight), at: 3 + n) } pdfView.currentPage?.addAnnotation(highlightAnnotation) } extension CGRect { var topLeft: CGPoint { get { return CGPoint(x: self.origin.x, y: self.origin.y + self.height) } } var topRight: CGPoint { get { return CGPoint(x: self.origin.x + self.width, y: self.origin.y + self.height) } } var bottomLeft: CGPoint { get { return CGPoint(x: self.origin.x, y: self.origin.y) } } func convert(to origin: CGPoint) -> CGRect { return CGRect(x: self.origin.x - origin.x, y: self.origin.y - origin.y, width: self.width, height: self.height) } }
from https://stackoverflow.com/questions/47469528/wrong-highlight-annotation-on-apple-pdfkit by cc-by-sa and MIT license
'SWIFT' 카테고리의 다른 글
[SWIFT] SecItemCopyMatching에 대한 신속한 2.0 키 체인 유형 오류 (0) | 2020.11.08 |
---|---|
[SWIFT] 스위프트 : 자르기 및 비디오 내보내기 (0) | 2020.11.08 |
[SWIFT] 스위프트에 JSONDecoder를을 사용하여 처리 오류 (0) | 2020.11.08 |
[SWIFT] 유형을 관찰 중포 기지마다 검색하여 모든 내 정보를 .childAdded. 지원하세요 (0) | 2020.11.08 |
[SWIFT] 스위프트 3 : atomic_compare_exchange_strong (0) | 2020.11.08 |