2017-04-02 17 views
3

現在、URLを受け入れる共有拡張機能を構築中です。これの一環として、前の質問で概説したように共有画面をカスタマイズしてフルスクリーン表示コントローラを作成しました。これはすべて正常に動作しています。しかし、私が気付いた既定の共有作者ビューでは、Webページのプレビューイメージがありました。私は自分の内線でこれにアクセスしようとしていますが、私はそれを握ることができません。iOS - Swift 3 Share Extensionプレビュー画像

具体的に、私はあなたがこれが完了ハンドラ

完了については、以下の言うことをドキュメントに注意します方法

loadPreviewImage

https://developer.apple.com/reference/foundation/nsitemprovider/1403925-loadpreviewimage

を使用しようとしてきましたハンドラ 結果とともに実行する完了ハンドラブロック。このブロックの最初のパラメータは、画像データを受け取るNSData、NSURL、UIImage(iOSの場合)、またはNSImage(macOSの場合)のタイプのパラメータでなければなりません。ブロックの実装の詳細については、「Completion Handler」を参照してください。予想される引数に - 「>()(UIImage、_」)

私は完了ブロックにUIImageとしてこれを設定しようとした場合しかし、私は

のエラーが型の値を変換できません取得 タイプ 'NSItemProvider.CompletionHandler!'ガード文を経由してItemProviderインがNSItemProviderのインスタンスであることが確認され

のコード例

itemProvider.loadPreviewImage(options: nil) { (image: UIImage, error) in  
     } 

完了ハンドラのためのドキュメントは、あなたが望むものを型にこれを設定すると、それは強要しようと言いますデータを指定したタイプに変換します。誰もこれを見たことがありますか?私は何が間違っているのか分からないので、ここで何をすべきか分からない。

https://developer.apple.com/reference/foundation/nsitemprovider/completionhandler

は他のすべては、私は、DOMから画像を取得するために、いくつかのJavascriptを使用して見てみましょう失敗した場合、私はAppleが私にはわからない

答えて

1

を提供するように見えたことをプレビュー画像を好きだろう理由コードは

itemProvider.loadPreviewImage(options: nil) { (image: UIImage, error) in  
     } 

は、ポストボタンをタップすると呼び出されません。

私のラウンド方法は

override func configurationItems() -> [Any]! { 
} 

let inputItem: NSExtensionItem = self.extensionContext?.inputItems[0] as! NSExtensionItem 
     let itemProvider = inputItem.attachments![0] as! NSItemProvider 
if (itemProvider.hasItemConformingToTypeIdentifier("public.url")) { 
      itemProvider.loadPreviewImage(options: nil, completionHandler: { (item, error) in // 画像を取得する 
       if let image = item as? UIImage { 
        if let data = UIImagePNGRepresentation(image) { 
         self.photoNSURL = try! FileManager.default.url(for: .documentDirectory, in: .userDomainMask, appropriateFor: nil, create: false).appendingPathComponent("preview.png") as NSURL! 

         do { 
          try data.write(to: self.photoNSURL as URL, options: .atomic) 
         } catch { 
          print("\(#file)#\(#function)(\(#line)): error: \(error.localizedDescription)") 
         } 
        } 
       } 
      }) 
     } 

ような方法でプレビュー画像を保存しています
関連する問題