UIActivityViewController によって使用される組み込みの UIActivity タイプによって実行されるアクティビティをオーバーライドすることは可能ですか?
たとえば、Facebook アクティビティで、組み込みビューではなく独自のカスタム ビューを使用したいと考えています。UIActivity をサブクラス化して、独自のアプリ固有のアクティビティを作成できることは知っていますが、組み込みアクティビティのデフォルトの動作にいつもこだわっていますか?
UIActivityViewController によって使用される組み込みの UIActivity タイプによって実行されるアクティビティをオーバーライドすることは可能ですか?
たとえば、Facebook アクティビティで、組み込みビューではなく独自のカスタム ビューを使用したいと考えています。UIActivity をサブクラス化して、独自のアプリ固有のアクティビティを作成できることは知っていますが、組み込みアクティビティのデフォルトの動作にいつもこだわっていますか?
組み込みのものをオーバーライドすることはできません。あなたができる最善の方法は、それらを非アクティブにして、UIActivity の独自のサブクラスに置き換えることです。機能的には、これはそれらをオーバーライドするのと同じ効果があります。
ただし、視覚的には、これらのサービスに独自のアイコン イメージを提供する必要があることを意味します。Apple のコードは、これらの画像を取得し、カラー データを破棄し、アルファ マップを使用して、Apple の通常の黒い点の背景に対して設定されたグレースケールのバージョンを作成します。独自のカスタム アクティビティにカラフルな画像を提供することはできません。おそらくこれは、人々が「公式」サービス アイコンをコピーして自分の目的のためにそれらを転覆することを防ぐためです。つまり、Facebook に何かを投稿するふりをして、実際にはまったく異なることを行うことです。
組み込みの UIActivity タイプの動作をオーバーライドすることはできませんが、独自のUIActivityItemProvider
サブクラスを提供することで、取得するデータをオーバーライドできます。このためには、上書きする必要があります– activityViewController:itemForActivityType:
したがって、100% 探しているものではありませんが、少なくとも組み込みのものを自分の意志に合わせて少し曲げることができます。