2013-03-08 3 views
0

Я хочу показать UIProgressView, когда пользователь сохраняет изображение в рулоне камеры.Во время сохранения в Camera Roll, как определить, сколько было загружено?

Мне нужно знать, какая часть изображения была загружена в данный момент, чтобы определить, что должен отображать индикатор прогресса. Как это определить?

Я делаю что-то вроде:

- (void)updateSaveProgressBar 
{  
    if ([self.saveProgressView progress] < 1) { 
    self.saveProgressView.progress = (float)receivedData/(float)totalData; 
    [NSTimer scheduledTimerWithTimeInterval:0.05 target:self selector:@selector(updateSaveProgressBar) userInfo:nil repeats:NO]; 
    } 
} 

self.saveProgressView является UIProgressView. В этом примере, как определить значение receivedData?

Спасибо.

+0

Вы используете функцию 'UIImageWriteToSavedPhotosAlbum'? Невозможно добиться прогресса. Это займет всего секунду или два. Просто покажите индикатор активности, если хотите. – rmaddy

+0

Я использую 'UIImageWriteToSavedPhotosAlbum'. Есть ли другой способ сохранения ролика камеры, где я могу добиться прогресса? Как это делает приложение Dropbox, например? – Steven

+0

Кроме того, я показываю меньшую версию изображения, а затем предлагаю сохранить полный размер, который все еще удален. Для загрузки потребуется больше, чем несколько секунд, особенно если пользователь находится в сети низкого качества. – Steven

ответ

0

Чтобы показать прогресс для загрузки удаленного файла, вы должны использовать async-загрузку с NSURLConnection и обновлять прогресс каждый раз, когда соединение получает данные (connection:didReceiveData:). После успешного завершения соединения вы можете позвонить UIImageWriteToSavedPhotosAlbum, чтобы сохранить изображение в рулоне камеры. Кроме того, UIImageWriteToSavedPhotosAlbum имеет селектор обратного вызова для вызова, когда сохранение завершено, вы можете использовать этот селектор, чтобы показать пользователю, что все процессы загрузки и сохранения изображения завершены.

UIImageWriteToSavedPhotosAlbum(image, self, @selector(image:didFinishSavingWithError:contextInfo:), NULL); 

селектор завершение

- (void)    image: (UIImage *) image 
    didFinishSavingWithError: (NSError *) error 
       contextInfo: (void *) contextInfo 
{ 

} 

удачи!

+0

Это кажется довольно близким к ответу @rmaddy, приведенному выше. Отметьте как правильный ответ, спасибо. – Steven

 Смежные вопросы

  • Нет связанных вопросов^_^