2016-11-05 5 views
2

나는 즉시 QR 코드를 생성하고 UIImage로 저장합니다. 지금은 UIActivityViewController을 사용하여 보낼 수 싶지만 어떻게 든 실패 :AirDrop을 통해 생성 된 QR 코드 UIImage를 보내지 못했습니다.

func generateQRCode(from string: String) -> UIImage? { 
    let data = string.data(using: String.Encoding.ascii) 

    if let filter = CIFilter(name: "CIQRCodeGenerator") { 
     filter.setValue(data, forKey: "inputMessage") 
     let transform = CGAffineTransform(scaleX: 3, y: 3) 

     if let output = filter.outputImage?.applying(transform) { 
      return UIImage(ciImage: output) 
     } 
    } 

    return nil 
} 

그리고 나는 함수를 호출하고하고있는 UIImage로 저장 :

let image = generateQRCode(from: "Create my Code") 
imgQRCode.image = image 

내보내기 버튼을 사용하여 다음과 조치 :

@IBAction func shareButtonClicked(sender: UIButton) { 

     let objectsToShare = [imgQRCode.image!] as [AnyObject] 
     let activityVC = UIActivityViewController(activityItems: objectsToShare, applicationActivities: nil) 

     activityVC.popoverPresentationController?.sourceView = sender 
     self.present(activityVC, animated: true, completion: nil) 

} 

나의 Mac으로 공중 투하를 통해 응용 프로그램을 보낼 선택한 후는

충돌 0
2016-11-05 23:29:15.912242 Ordnung[3945:888442] CGContextScaleCTM: invalid context 0x0. If you want to see the backtrace, please set CG_CONTEXT_SHOW_BACKTRACE environmental variable. 

11 월 5 일 23시 29 분 15 초 Ordnung [3945] : CGContextScaleCTM : 유효하지 않은 컨텍스트 0x0. 백 트레이스를보고 싶다면 CG_CONTEXT_SHOW_BACKTRACE 환경 변수를 설정하십시오.

2016-11-05 23:29:15.912396 Ordnung[3945:888442] CGContextTranslateCTM: invalid context 0x0. If you want to see the backtrace, please set CG_CONTEXT_SHOW_BACKTRACE environmental variable. 
Nov 5 23:29:15 Ordnung[3945] <Error>: CGContextTranslateCTM: invalid context 0x0. If you want to see the backtrace, please set CG_CONTEXT_SHOW_BACKTRACE environmental variable. 
2016-11-05 23:29:15.912584 Ordnung[3945:888442] CGContextConcatCTM: invalid context 0x0. If you want to see the backtrace, please set CG_CONTEXT_SHOW_BACKTRACE environmental variable. 
Nov 5 23:29:15 Ordnung[3945] <Error>: CGContextConcatCTM: invalid context 0x0. If you want to see the backtrace, please set CG_CONTEXT_SHOW_BACKTRACE environmental variable. 
2016-11-05 23:29:15.912692 Ordnung[3945:888442] CGContextDrawImage: invalid context 0x0. If you want to see the backtrace, please set CG_CONTEXT_SHOW_BACKTRACE environmental variable. 
Nov 5 23:29:15 Ordnung[3945] <Error>: CGContextDrawImage: invalid context 0x0. If you want to see the backtrace, please set CG_CONTEXT_SHOW_BACKTRACE environmental variable. 
2016-11-05 23:29:15.927580 Ordnung[3945:888442] [AirDrop] Sender kSFOperationEventErrorOccured { 
    Error = "Error Domain=SFOperation Code=-5 \"Die \U00dcbertragung ist fehlgeschlagen, da du eine ung\U00fcltige Datei senden wolltest.\" UserInfo={NSLocalizedDescription=Die \U00dcbertragung ist fehlgeschlagen, da du eine ung\U00fcltige Datei senden wolltest.}"; 
    SessionID = 76FBE80074FC; 
} 

아무에게도이를 수행하는 방법에 대한 아이디어가 있습니까?

건배 Maik

답변

6

내가 그렇게있는 UIImage 만들기 전에이 방법은의 CGImage을 만들어 문제를 해결 QR 코드 생성을 변경, 약간 다른 방법으로 이미지를 제공해야 할 것 같다

func generateQRCode(from string: String) -> UIImage? { 
    let ciContext = CIContext() 
    let data = string.data(using: String.Encoding.ascii) 

    if let filter = CIFilter(name: "CIQRCodeGenerator") { 
     filter.setValue(data, forKey: "inputMessage") 
     let transform = CGAffineTransform(scaleX: 3, y: 3) 
     let upScaledImage = filter.outputImage?.applying(transform) 


     let cgImage = ciContext.createCGImage(upScaledImage!, 
               from: upScaledImage!.extent) 
     qrcodeImage = UIImage(cgImage: cgImage!) 
     return qrcodeImage 
    } 
    return nil 
} 

또한 이미지의 png 또는 jpg 표현을 사용해야합니다.

func share() { 
    let png = UIImagePNGRepresentation(qrcodeImage) 
    let vc = UIActivityViewController(activityItems: [png!], applicationActivities: []) 
    present(vc, animated: true) 
} 
+0

내 날을 저장했습니다. 감사! – DeZigny