Pergunta

Eu tenho um controlador de exibição apresentado ao pressionar uma das guias em um tabarcontroller. Neste controlador de exibição, inicializo um uiimagePickerController no método ViewDidload:

- (void)viewDidLoad
{
    [super viewDidLoad];

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

A intenção é exibir o UiImagePickerController em um momento posterior, quando um botão é pressionado. Por alguma razão, porém, quando o ícone da guia é pressionado para esse controlador de exibição, há um suspensão de 3-4 segundos enquanto esse método ViewDidload está em execução. Quando eu comento a linha _ImagePicker = [[UiImagePickerController aloc] init] Não há tempo de suspensão e o controlador de exibição carrega imediatamente - como deveria.

Alguém sabe por que alocar e inicializar o UiImagePickerController está demorando tanto? Em caso afirmativo, existe uma maneira de acelerar além de executá -lo como um processo em segundo plano? Parece que esse não é um comportamento normal.

Estou usando o iOS7 e não estou chamando o ViewWillappear ou o ViewDidAppear.

Foi útil?

Solução

Acontece que isso é apenas um problema quando no modo de depuração (quando o iPhone está conectado e executando o Xcode). Uma vez que o mesmo aplicativo esteja em execução sem estar conectado ao Xcode, o atraso não ocorre.

Outras dicas

Experimente este 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];
    });
});

** Apresentador é o seuViewController / self

Tente isso.

    - (void)viewDidLoad{

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

[super viewDidLoad];
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top