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。

因此,您仍然可以异步加载图像并在操作的完成块上设置图像并呈现视图控制器。

但是您可能需要查看冻结的 UI 是因为图像仍在加载还是因为图像尺寸太大。

您可以先尝试异步加载图片,看看是否有帮助:Download a asynchronous multiple images in UITableViewView?

在加载图像时,您还可以放置活动指示器并在完成时将其删除。

否则,可能是图像的大小导致了问题,您需要考虑缩小要通过 Twitter 共享的图像。

于 2013-06-03T05:42:37.650 回答