UIActivityViewController
ユーザーが作成した画像をいくつかのアクティビティタイプ (facebook、twitter、カメラロールに保存、印刷など) のいずれかに共有できるようにする機能があります。
アクティビティに応じてさまざまな品質レベル (印刷用の高解像度、Twitter 用の低解像度) で画像を保存/送信したいので、カスタムUIActivityItemProvider
を使用して (当然のことながら) 画像を提供しています。
高解像度バージョンのレンダリングには時間がかかるため、動作中のアクティビティ インジケーターを表示したいと考えています。アップルのドキュメントは、実際にそれを行うことについて言及しています。
しかし、進行状況インジケーターを表示するためのフックを配置する「正しい」場所を理解できないようです...どこに行くべきですか?
更新:- (id) activityViewController:(UIActivityViewController *)activityViewController itemForActivityType:(NSString *)activityType
メソッド
で次のことを試しました:
[self performSelectorOnMainThread:@selector(startSpinnerWithMessage:) withObject:message waitUntilDone:YES];
self.shareImage = [self.delegate imageForActivityOfType:activityType]; // code that actually generates the image; takes a while.
[self performSelectorOnMainThread:@selector(endSpinner) withObject:nil waitUntilDone:YES];
...仕事をしません。アクティビティ ボタンをタップすると、画像の生成中に UI がフリーズし、終了時にスピナーが一瞬表示されてから消えます。
endSpinner 呼び出しの配置は理にかなっていると思いますが、startSpinner 呼び出しは別の場所に移動する必要があるようです。ここで何をすべきかわかりません。