1

私はiTunesからいくつかの音楽トラックをリストするアプリに取り組んでおり、SLComposeViewControllerを使用してトラックTwitterをツイートのアルバムアートワークと共有しています。現在は機能していますが、共有ボタンをクリックすると、「ツイート インターフェイス」が表示されるまでに時間がかかりすぎて、UI がフリーズしているように見えます。

画像の読み込みが原因だと思いますが、非同期で読み込む方法がわかりません。だって、よくわかったらSLComposeViewControllerを見せたらもう更新できなくなってしまって…

これは私が使用しているコードです:

NSString *textToShare = [[self.punchlinesArray objectAtIndex:[indexPath row]] objectForKey:@"quoteContent"];
NSString *imgUrlToShare = [[self.punchlinesArray objectAtIndex:[indexPath row]] objectForKey:@"artworkURL"];
UIImage *image = [UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:imgUrlToShare]]];
SLComposeViewController *tweetSheet = [SLComposeViewController
                                       composeViewControllerForServiceType:SLServiceTypeFacebook];

[tweetSheet setInitialText:textToShare];
[tweetSheet addImage:image];

乾杯、

バスティアン

4

1 に答える 1

2

SLComposeViewController addImage メソッドのクラス参照から:

画像が現在使用可能なスペースに収まらない場合、またはビュー コントローラーが既にユーザーに提示されている (したがって変更できない) 場合、このメソッドは NO を返します。

そのため、画像を非同期でロードし、操作の完了ブロックで画像を設定し、View Controller を提示することができます。

ただし、UI がフリーズしているのは、画像がまだ読み込まれているためなのか、画像サイズが大きすぎるためなのかを確認する必要がある場合があります。

最初に画像を非同期にロードしてみて、それが役立つかどうかを確認できます: UITableViewView で非同期の複数の画像をダウンロードしますか?

画像の読み込み中に、アクティビティ インジケーターを配置して、完了時に削除することもできます。

それ以外の場合は、問題の原因となっている画像のサイズである可能性があり、Twitter で共有する画像を縮小することを検討する必要があります。

于 2013-06-03T05:42:37.650 に答える