La anotación (Imagen y Texto) subraya la position de los cambios después de save

He creado una aplicación basada en PDF. En primer lugar, obtengo el PDF del directory de documentos y luego lo convierto a Imágenes y luego, mediante progtwigción, establezco todas las imágenes verticalmente usando UIImageView y ScrollView .

Luego, establezco un tipo diferente de anotación como el sign , el text , etc. Cuando lo finalicé en imágenes y las convierto a PDF con buen resultado. Obtengo resultados diferentes como se muestra en las imágenes a continuación.

Pantalla 1: convierte el tamaño original de la image al tamaño UIImageView con el aspecto apropiado (porque me parezco a este tipo de pantalla) cuando tengo el tamaño original de la conversión al tamaño de la pantalla en ese momento tengo el tamaño original de la image almacenada y se usa cuando tengo convertir imágenes a pdf después de agregar annotations en la pantalla 2.

introduzca la descripción de la imagen aquí

Pantalla 2. cuando termine o convierta a pdf. el resultado se ve en la pantalla 2, cambia la anotación o la position del signo.

introduzca la descripción de la imagen aquí

 let drawImage = jotViewController.renderImage() //sign image signImg = drawImage gestureView = UIView(frame: CGRect(x: 50, y: 300, width: 200, height: 110)) counter = counter + 1 gestureView.tag = counter annotationImg = UIImageView(frame: CGRect(x: 0, y: 0, width:170, height: 80)) annotationImg.image = signImg annotationImg.layer.cornerRadius = 5.0 // gestureView.frame = annotationImg.frame cancelBtn.frame = CGRect(x: (annotationImg.frame.minX-10), y: (annotationImg.frame.maxY-10), width: 20, height: 20) cancelBtn.setImage(#imageLiteral(resourceName: "cancel.png"), for: .normal) cancelBtn.addTarget(self, action: #selector(cancelBtnAction), for: .touchUpInside) gestureView.addSubview(cancelBtn) zoomBtn.frame = CGRect(x: (annotationImg.frame.width-10), y: (annotationImg.frame.height-10), width: 20, height: 20) zoomBtn.setImage(#imageLiteral(resourceName: "zoom.png"), for: .normal) gestureView.addSubview(zoomBtn) let zoomBtnpanGesture: UIPanGestureRecognizer = UIPanGestureRecognizer(target: self, action: #selector(ViewController.zoomBtnPanGesture(_:))) zoomBtnpanGesture.minimumNumberOfTouches = 1 zoomBtnpanGesture.maximumNumberOfTouches = 1 zoomBtn.addGestureRecognizer(zoomBtnpanGesture) let panGesture = UIPanGestureRecognizer(target: self, action: #selector(self.handlePanGesture)) panGesture.minimumNumberOfTouches = 1 panGesture.maximumNumberOfTouches = 1 annotationImg.backgroundColor = UIColor.lightGray.withAlphaComponent(0.5) gestureView.addGestureRecognizer(panGesture) annotationImg.clipsToBounds = true gestureView.addSubview(annotationImg) for getUIImageView in pdfUIImageViewArr { if tag==0 { let alert = UIAlertController(title: "Alert!!", message: "Please Select Signature Page.", prefernetworkingStyle: .alert) alert.addAction(UIAlertAction(title: "OK", style: .default, handler: nil)) present(alert, animated: true, completion: nil) } if getUIImageView.tag == tag && tag != 0 { getUIImageView.addSubview(gestureView) } } let tapGesture = UITapGestureRecognizer(target: self, action: #selector(gestureViewTapped(sender:))) tapGesture.numberOfTapsRequinetworking = 1 gestureView.addGestureRecognizer(tapGesture) imageViewArr.append(annotationImg) gestureViewArr.append(gestureView) UIDevice.current.setValue(UIInterfaceOrientation.portrait.rawValue, forKey: "orientation") @IBAction func storeAsPdfAction(_ sender: AnyObject) { self.storeToDocumentDir() let userObj = self.storyboard?.instantiateViewController(withIdentifier: "DocumentVC") as? DocumentVC self.navigationController?.pushViewController(userObj!, animated: true) } func storeToDocumentDir(){ print(pdfImage.frame) print(view.frame) print(gestureView.frame) for getTextViewLbl in textViewLabelArr{ getTextViewLbl.backgroundColor = UIColor.clear } gestureViewArr.removeFirst() for gestureView in gestureViewArr { print(gestureView.frame) zoomBtn.isHidden = true cancelBtn.isHidden = true // pdfImage.addSubview(gestureView) } pdfUIImageViewArr.remove(at: 0) var i = 1 for getPDFImage in pdfUIImageViewArr { getPDFImage.frame = CGRect(x: 0, y: 0, width: pdfImage.frame.size.width, height: pdfImage.frame.size.height) getPDFImage.frame = CGRect(x: 0, y: 0, width: pageRect.size.width, height: pageRect.size.height) getPDFImage.contentMode = UIViewContentMode.scaleToFill // let getImage = self.imageWithView(getPDFImage) let fileManager = FileManager.default let paths = (NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0] as NSString).appendingPathComponent("img\(i).jpg") i += 1 let image = getImage print(paths) let imageData = UIImageJPEGRepresentation(image, 0.5) fileManager.createFile(atPath: paths as String, contents: imageData, attributes: nil) setPdfImgArr.append(getImage) } self.createPdfFromView(pdfImage, imageArrAdd: setPdfImgArr, saveToDocumentsWithFileName: "\((setFileName)!)") let pdfUrl = URL(fileURLWithPath:documentsFileName) self.setImagesInScrollView(pdfUrl) } 

Problema resuelto: mediante el uso de UIScrollView Zoom:

  override func viewWillLayoutSubviews() { self.configureZoomScale() } func configureZoomScale() { var xZoomScale: CGFloat = self.scrollView.bounds.size.width / self.pdfImage.bounds.size.width var yZoomScale: CGFloat = self.scrollView.bounds.size.height / self.pdfImage.bounds.size.height var minZoomScale: CGFloat = min(xZoomScale, yZoomScale) //set minimumZoomScale to the minimum zoom scale we calculated //this mean that the image cant me smaller than full screen self.scrollView.minimumZoomScale = minZoomScale //allow up to 4x zoom self.scrollView.maximumZoomScale = 4 //set the starting zoom scale self.scrollView.zoomScale = minZoomScale } func viewForZooming(in scrollView: UIScrollView) -> UIView?{ return pdfFinalImage }