2017-10-20 4 views
3

だから、iOS10であなたがUIActivityViewControllerで画像を共有したいと思った場合、あなただけのように見えたいくつかのswift3コードを記述する必要があります:iOS11:UIActivityViewControllerが正常にサードパーティ製のアプリにUIImageを共有していない

func shareTapped() {  
     if let image = imageView.image { 
      let vc = UIActivityViewController(activityItems: [image], applicationActivities: []) 
      vc.popoverPresentationController?.barButtonItem = navigationItem.rightBarButtonItem 
      present(vc, animated: true, completion: nil) 
     } 

この方法はまだカメラロールに画像を保存したい場合(適切な権限を要求した場合)、またはメッセンジャー、エアドップ、または他のアップルの実装を介して共有したい場合は、動作します。

残念ながら、Twitter、Facebook、Instagramなどで画像を共有しようとすると、画像は正常に添付されず、エラーが返されるか、自動的に失敗します。

私はgoogle、youtube、stackoverflowを検索するのに多額の時間を費やしています.iOS11がリリースされて以来、すべてがiOS10ソリューションを指しています。

これらの行に文字列、URLなどを渡す場合は、この機能が正常に機能することに注意してください。画像を渡そうとしたときに最初のデータにあなたの画像を変換し、その後UIActivityViewControllerにそのオブジェクトを渡すことによって

答えて

5

ショートバージョン/ TLDR

はツイッター/ Facebookの問題を解決:

if let jpgImage = UIImageJPEGRepresentation(image, 0.8) { 
     let vc = UIActivityViewController(activityItems: [jpgImage], applicationActivities: []) 
    } 

長い植と完全なコードは以下の見つけることができます:

長いバージョン

私はいくつかの専門家に手を差し伸べましたが、それはまったく問題ないと思っていましたが、サンプルアプリを見ても同じ問題を抱えていました。だから、私は最終的にTwitterやFacebookでこれが問題になるかもしれないと考えました。その後、Photosアプリで遊んで、共有ボタンを押すことに決めました。そして、それはTwitterとFacebookで働いていました。これは、これがこれを機能させるために必要な増分設定があることを意味するのかどうか疑問に思いました。多くの異なることを試した後、私は最終的に働く方法を見つけました。 PNGやJPGを使って画像をDataに変換し、その新しいオブジェクトをあなたのactivityItemsに渡すことでTwitter/Facebookの問題が解決され、それでも他のすべてのものとうまくいくようです。 PNGに画像を変換更新swift4/ios11コードは次のようになります。

@objc func shareTapped() { 
     if let image = imageView.image { 
      if let jpgImage = UIImageJPEGRepresentation(image, 0.8) { 
       let vc = UIActivityViewController(activityItems: [jpgImage], applicationActivities: []) 
       // add the following line if using doing universal and need iPad 
       vc.popoverPresentationController?.barButtonItem = navigationItem.rightBarButtonItem 
       present(vc, animated: true) 
      } 
     } 
    } 

希望、これは他の誰を助けることがiOS11以来、画像を共有する苦労されています。

+1

かなり十分です。 JPGと安全なアンラッピングを活用するように更新されました。 – Causaelity

+0

素晴らしい!私の日を救った!ありがとうございました! – mikezs

+0

'UIImageJPEGRepresentation(image、0.8)'は 'iOS 11'で画像共有を修正し、以前のバージョンで作業するのに本当に役立ちます、ありがとうございます! –

関連する問題