소스 검색

【2025】【Edit】裁剪功能完善

niehaoyu 1 개월 전
부모
커밋
d331ae9bd4
1개의 변경된 파일33개의 추가작업 그리고 29개의 파일을 삭제
  1. 33 29
      PDF Office/PDF Master/KMClass/KMPDFViewController/EditTool/Crop/KMCropController.swift

+ 33 - 29
PDF Office/PDF Master/KMClass/KMPDFViewController/EditTool/Crop/KMCropController.swift

@@ -11,7 +11,7 @@ import KMComponentLibrary
 @objc protocol KMCropControllerDelegate: AnyObject {
     
     @objc optional func kmCropControllerDidCrop(_ controller: KMCropController, _ cropRect: CGRect, _ view: KMPageRangeSelectView)
-     
+    
     @objc optional func kmCropControllerDidCropSeparate(_ controller: KMCropController, _ view: KMPageRangeSelectView)
     
     @objc optional func kmCropControllerDidCropAuto(_ controller: KMCropController, _ view: KMPageRangeSelectView)
@@ -20,14 +20,14 @@ import KMComponentLibrary
 }
 
 class KMCropController: NSViewController {
-
+    
     @IBOutlet var contendView: NSView!
     
     @IBOutlet var preInfoView: NSView!
     @IBOutlet var propertyInfoView: NSView!
-     
+    
     private var documentPreview: KMEditDocumentController = KMEditDocumentController.init()
- 
+    
     private var coverController: KMCropCoverController?
     
     var pdfView: CPDFListView? {
@@ -37,14 +37,14 @@ class KMCropController: NSViewController {
     }
     var pdfDocument: CPDFDocument?
     var selectionRect: CGRect = .zero
-
+    
     weak open var delegate: KMCropControllerDelegate?
     
     
     override func viewDidLoad() {
         super.viewDidLoad()
         // Do view setup here.
-         
+        
         setup()
     }
     
@@ -57,10 +57,10 @@ class KMCropController: NSViewController {
         documentPreview.pdfView.pdfListViewDelegate = self
         documentPreview.pdfView.delegate = self
         preInfoView.addSubview(documentPreview.view)
-         
+        
         hiddenPropertyView(false)
     }
- 
+    
     func reloadData() {
         guard let pdfDocument = pdfDocument else {
             return
@@ -69,52 +69,56 @@ class KMCropController: NSViewController {
         documentPreview.pdfDocument = pdfDocument
         documentPreview.reloadData()
         
-        let page = pdfDocument.page(at: 0)
-        let bounds = page?.bounds ?? CGRectZero
-        
         documentPreview.pdfView.toolMode = .CCropToolMode
         documentPreview.pdfView.selectionPageIndex = 0
         
-        if CGRectEqualToRect(selectionRect, CGRectZero) {
-            selectionRect = bounds
-        } else {
-            documentPreview.pdfView.selectionRect = selectionRect
-            documentPreview.pdfView.setNeedsDisplayForVisiblePages()
-        }
-      
+        reloadSelectionRect()
     }
     
     func hiddenPropertyView(_ hidden: Bool) {
- 
+        
     }
     
+    func reloadSelectionRect() {
+        guard let pdfDocument = pdfDocument else {
+            return
+        }
+        if CGRectEqualToRect(selectionRect, CGRectZero) {
+            let page = pdfDocument.page(at: 0)
+            let bounds = page?.bounds ?? CGRectZero
+            
+            selectionRect = bounds
+        } else {
+            
+        }
+        documentPreview.pdfView.selectionRect = selectionRect
+        documentPreview.pdfView.selectionPageIndex = 0
+        documentPreview.pdfView.setNeedsDisplayForVisiblePages()
+    }
     
 }
 
 //MARK: - CPDFListViewDelegate
 extension KMCropController: CPDFListViewDelegate {
     func pdfListViewChangedSelectionOrMagnification(_ pdfListView: CPDFListView!) {
- 
+        
         delegate?.kmCropControllerDidChangedSelectionOrMagnification?(self)
     }
     
     func pdfListViewDidSelectionEnd(_ pdfListView: CPDFListView!) {
-
+        
     }
 }
 
 extension KMCropController: CPDFViewDelegate {
     func pdfViewDocumentDidLoaded(_ pdfView: CPDFView!) {
-        DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + 1) {
-            if CGRectEqualToRect(self.selectionRect, CGRectZero) {
-
-            } else {
-                self.documentPreview.pdfView.selectionRect = self.selectionRect
-                self.documentPreview.pdfView.setNeedsDisplayForVisiblePages()
-            }
+        DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + 0.3) {
+            self.reloadSelectionRect()
+            
+            self.delegate?.kmCropControllerDidChangedSelectionOrMagnification?(self)
         }
     }
-     
+    
 }
 
 //MARK: - KMCropPropertyControllerDelegate