Si scopre che questo è solo un problema in modalità debug (quando l'iPhone è connesso ed esegue tramite Xcode). Una volta che la stessa app è in esecuzione senza essere collegata a Xcode, il ritardo non si verifica.
UiIMagePickerController davvero lentamente quando si chiama alloc init
-
25-08-2022 - |
Domanda
Ho un controller di visualizzazione che viene presentato su una pressione su una delle schede in un tabbarcontroller. In questo controller di visualizzazione Inizializzare un uiIMagePickerController nel metodo ViewDidload:
- (void)viewDidLoad
{
[super viewDidLoad];
//Set imagePicker
//-------------------------//
_imagePicker = [[UIImagePickerController alloc] init];
_imagePicker.delegate = self;
_imagePicker.videoMaximumDuration = 10.0f;
}
L'intenzione è quindi visualizzare l'UiimagePickerController in un secondo momento in cui viene premuto un pulsante. Per qualche motivo, però, quando l'icona della scheda viene premuta per questo controller di visualizzazione, è presente un impiccagione di 3-4 secondi mentre questo metodo ViewDidload è in esecuzione. Quando commenta la riga _imagepicker = [[UiImagePickerController alloc] init] non c'è tempo di appendiabiti e il controller di visualizzazione si carica immediatamente - come dovrebbe.
Qualcuno sa perché allocare e inizializzare l'uIimagePickerController sta impiegando così tanto tempo? In tal caso, c'è un modo per accelerarlo oltre a eseguirlo come processo di fondo? Sembra che questo non sia un comportamento normale.
Sto usando iOS7 e non sto chiamando ViewWillaPappear o ViewDidappear.
Soluzione
Altri suggerimenti
Prova questo iOS 12
//show a HUD or activityIndicator
dispatch_async(dispatch_queue_create("openPhotosCamera", NULL), ^{
UIImagePickerController *mediaUI = [[UIImagePickerController alloc] init];
dispatch_async(dispatch_get_main_queue(), ^{
//hide HUD or activityIndicator
[presenter presentViewController:mediaUI animated:YES completion:nil];
});
});
** Il presentatore è il tuo ViewController / self
Prova questo.
- (void)viewDidLoad{
//Set imagePicker
//-------------------------//
_imagePicker = [[UIImagePickerController alloc] init];
_imagePicker.delegate = self;
_imagePicker.videoMaximumDuration = 10.0f;
[super viewDidLoad];