2017-03-04 1 views
0

En essayant d'imprimer directement à partir de mon application - c'est une liste de contrôle. Le seul problème est lorsque j'imprime, l'image remplira seulement 1/4 du papier d'impression. Je veux que l'image remplisse le papier de 8,5 pouces sur 11 pouces.Comment mon bouton d'impression peut-il imprimer des images de 8,5 pouces sur 11 pouces? Swift 3, IOS

Ceci est mon bouton d'impression:

@IBAction func buttonAction2(_ sender: UIButton) { 


    //Screenshot of view controller (minus status/Nav bar) 
    let top: CGFloat = 46 
    let bottom: CGFloat = 0 
    let size = CGSize(width: view.frame.size.width, height: view.frame.size.height - top - bottom) 
    UIGraphicsBeginImageContextWithOptions(size, false, 0) 
    let context = UIGraphicsGetCurrentContext()! 
    context.translateBy(x: 0, y: -top) 
    view.layer.render(in: context) 
    let snapshot = UIGraphicsGetImageFromCurrentImageContext() 
    UIGraphicsEndImageContext() 

    ///Print screenshot 
    let printController = UIPrintInteractionController.shared 
    let printInfo = UIPrintInfo(dictionary:nil) 

    printInfo.jobName = "printing an image" 
    printInfo.outputType = .photo 

    printController.printInfo = printInfo 
    printController.printingItem = snapshot 
    printController.present(animated: true) { (_, isPrinted, error) in if error == nil { 
     if isPrinted { 
      print("image is printed") 
     }else{ 
      print("image is not printed") 
     } 
     } 
    } 

} 

je peux enregistrer l'image sur mon rôle d'appareil photo et d'imprimer à partir de là, au lieu d'imprimer directement à partir de mon application et qui fonctionne parfaitement. L'image remplit la page entière, lors de l'impression de mon appareil photo rouleau:

//Save photo to camera roll 
    UIImageWriteToSavedPhotosAlbum(snapshot!, nil, nil, nil) 

J'ai vraiment besoin d'imprimer à partir de l'application, cependant. Y'a-t-il une quelconque façon de réussir cela?

Répondre

0

Avez-vous essayé d'adapter le contexte après la traduction?

context.translateBy(x: 0, y: -top) 
context.scaleBy(x: 2, y: 2) 
+0

L'image est maintenant 75% coupé (de lui faire sauter), et encore remplir seulement 75% de la page. – DanielG

0

Je l'ai compris. Je suis stupide.

Utilisation:

printInfo.outputType = .general 

Au lieu de:

printInfo.outputType = .photo