4

У меня есть выборщик изображений, чтобы выбрать несколько изображений из библиотеки фотографий. Выбранные фотографии изменяются и сохраняются в файле imagePickerController:didFinishPickingMediaWithInfo:. Это займет несколько секунд.Как добавить индикатор в UIImagePickerController

Могу ли я поставить индикатор на вид? Я попытался использовать addSubview:indicatorView в imagePickerController:didFinishPickingMediaWithInfo: метод. Но indicatorView не отображается. Он снимается с помощью imagePickerView.

ответ

3

Вы должны добавить UIActivityIndicatorView в верхней части иерархии представлений, иначе он будет отклонен с помощью UIPickerViewController, если вы не используете обратный вызов после операции изменения размера, а в обратном вызове вы отклоняете UIImagePickerController.

Или вы могли бы использовать прогресс HUD как SVProgressHUD.

Надеется, что это помогает =)

Мы сделали небольшой сеанс чата и решить таким образом:

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ 
    dispatch_async(dispatch_get_main_queue(), ^{ 
      UIView *primaryImage = [[UIView alloc] initWithFrame:CGRectMake(0,0,320,460)]; 
      primaryImage.backgroundColor = [UIColor redColor]; 
      primaryImage.alpha =0.9; 

      UIView *secondaryImage = [[UIView alloc] initWithFrame:CGRectMake(0,0,70,70)]; 
      secondaryImage.center = CGPointMake(160, 240); 
      secondaryImage.backgroundColor = [UIColor blackColor]; 
      secondaryImage.alpha = 0.9; 
      secondaryImage.layer.cornerRadius = 12; 
      [primaryImage addSubview:secondaryImage]; 
      UIActivityIndicatorView *indicator = [[UIActivityIndicatorView alloc] initWithFrame:CGRectMake(0, 0, 25, 25)]; 
      indicator.center = CGPointMake(35, 35); 
      [indicator setHidesWhenStopped:NO]; 
      [secondaryImage addSubview:indicator]; 
      [indicator startAnimating]; 

      [indicator release]; 
      [secondaryImage release]; 

      [picker.view addSubview:primaryImage]; 

     [primaryImage release]; 
    }); 

    // Put here the code to resize the image 

    dispatch_async(dispatch_get_main_queue(), ^{ 
    // Dismiss the picker controller 

    }); 
}); 
+0

Да, я положил его на вершине иерархии зрения, но это не обнаруживалось, до увольнения анимированного периода. Вот что я имею в виду: «он будет уволен с помощью UIPickerViewController». –

+0

Для «в верхней части иерархии представлений» я имею в виду в UIWindow. В любом случае вы можете попытаться добавить UIIndicatorView при создании UIPickerController и управлять им с помощью ivar. – GreyHands

+0

Вы имеете в виду добавить в окно? позвольте мне попробовать, до сих пор не работает. Да, я создал индикатор и спрятал его сначала, но как только я установил скрытый в НЕТ, он не работает. –

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