У меня есть UIActivityViewController
, который позволяет пользователю делиться созданным изображением с одним из нескольких типов действий (facebook, twitter, сохранение в фотопленку, печать и т. д.).
Поскольку я хочу, чтобы изображение сохранялось/отправлялось с разным уровнем качества в зависимости от активности (высокое разрешение для печати, низкое разрешение для твиттера), я использую пользовательский UIActivityItemProvider
для предоставления изображения.
Рендеринг версии с высоким разрешением занимает некоторое время, поэтому я хочу отображать индикатор активности, пока он делает свое дело. Документы Apple ссылаются именно на это.
Но я не могу понять "правильные" места, чтобы разместить крючки для отображения моего индикатора прогресса... куда они должны идти?
ОБНОВЛЕНИЕ: В методе - (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];
... не выполняет свою работу. Когда я нажимаю кнопку активности, пользовательский интерфейс зависает во время создания изображения, а затем, когда он заканчивается, я вижу счетчик на долю секунды, а затем он исчезает.
Я думаю, что позиционирование вызова endSpinner имеет смысл... однако кажется, что вызов startSpinner должен идти куда-то еще. Не знаю, что здесь делать.