Можно ли добавить изображение в SLComposeViewController из URL-адреса асинхронно?

Я работаю над приложением, в котором перечислены некоторые музыкальные треки из iTunes, и я использую SLComposeViewController, чтобы поделиться треком в Twitter с обложкой альбома в твите. Это работает прямо сейчас, но когда я нажимаю кнопку «Поделиться», требуется слишком много времени, чтобы показать мне «интерфейс твита», и пользовательский интерфейс кажется замороженным.

Я думаю, это из-за загрузки изображения, но я не знаю, как загрузить его асинхронно. Потому что, если я хорошо понимаю, как только я показал 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];

Ваше здоровье,

Бастьен


person BastienPenalba    schedule 02.06.2013    source источник


Ответы (1)


Из ссылка на класс метода SLComposeViewController addImage:

Этот метод возвращает НЕТ, если изображение не помещается в доступное в данный момент пространство или если контроллер представления уже представлен пользователю (и, следовательно, не может быть изменен).

Таким образом, вы все еще можете загрузить изображение асинхронно и в блоке завершения вашей операции, установить изображение и представить контроллер представления.

Но вам может понадобиться выяснить, вызван ли зависший пользовательский интерфейс из-за того, что изображение все еще загружается, или из-за того, что размер изображения слишком велик.

Вы можете сначала попробовать загрузить изображение асинхронно и посмотреть, поможет ли это: несколько изображений в UITableViewView?

Пока изображение загружается, вы также можете поставить индикатор активности и убрать его по завершению.

В противном случае причиной проблемы может быть размер изображения, и вам нужно будет подумать об уменьшении размера изображения, чтобы поделиться им через Twitter.

person Valent Richie    schedule 03.06.2013