我正在开发一个应用程序,它列出了iTunes中的一些音乐曲目,我正在使用SLComposeViewController与Twitter中的专辑插图共享音轨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];
干杯,
巴斯蒂安
答案 0 :(得分:2)
来自class reference of the SLComposeViewController addImage方法:
如果图像不适合当前图像,则此方法返回NO 可用空间或如果视图控制器已经存在 向用户显示(因此无法更改)。
因此,您仍然可以异步加载图像并在操作的完成块上加载图像,设置图像并显示视图控制器。
但您可能需要查看冻结的UI是否是由于图像仍在加载,还是因为图像尺寸过大。
您可以先尝试异步加载图片并查看是否有帮助:Download an asynchronous multiple images in UITableViewView?
在加载图像时,您还可以放置活动指示符并在完成时将其删除。
否则,它可能是导致问题的图像大小,您需要考虑缩小图像以通过Twitter共享。
答案 1 :(得分:-1)
您可以在将图像添加到SLComposeViewController之前下载图像,因为当您单击共享按钮时,它首先会下载图像,这会导致显示composeView的延迟。