Question

J'ai un contrôleur de vue qui est présenté en appuyant sur l'un des onglets dans un TabbarController. Dans ce contrôleur de vue, j'initialise un uiImagePickerController dans la méthode ViewDidload:

- (void)viewDidLoad
{
    [super viewDidLoad];

    //Set imagePicker
    //-------------------------//
    _imagePicker = [[UIImagePickerController alloc] init];
    _imagePicker.delegate = self;
    _imagePicker.videoMaximumDuration = 10.0f;
}

L'intention est ensuite d'afficher le UIImagePickerController à un moment ultérieur lorsqu'un bouton est enfoncé. Pour une raison quelconque, lorsque l'icône d'onglet est enfoncée pour ce contrôleur de vue, il y a un hang de 3-4 secondes pendant que cette méthode ViewDidload est en cours d'exécution. Lorsque je commençai la ligne _imagePicker = [[uiImagePickerController alloc] init] il n'y a pas de temps de suspension et le contrôleur de vue se charge immédiatement - comme il se doit.

Est-ce que quelqu'un sait pourquoi l'allocation et l'initialisation de l'UIImagePickerController prennent si longtemps? Si oui, y a-t-il un moyen de l'accélérer autrement que de l'exécuter en tant que processus de fond? Il semble que ce ne soit pas un comportement normal.

J'utilise iOS7 et je n'appelle pas ViewWillAppear ou ViewDidAppear.

Était-ce utile?

La solution

Il s'avère que ce n'est qu'un problème en mode débogage (lorsque l'iPhone est connecté et exécutez Xcode). Une fois que la même application est en cours d'exécution sans être connectée à Xcode, le décalage ne se produit pas.

Autres conseils

Essayez ce 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];
    });
});

** Le présentateur est votre ViewController / Self

Essaye ça.

    - (void)viewDidLoad{

    //Set imagePicker
    //-------------------------//
    _imagePicker = [[UIImagePickerController alloc] init];
    _imagePicker.delegate = self;
    _imagePicker.videoMaximumDuration = 10.0f;

[super viewDidLoad];
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top