2014-12-07 3 views
0

Я создаю UIImageView, после чего я осмыслил его размытое изображение в ApplicationDidLaunch. Это ImageView перекрывает весь экран и предназначен, чтобы покрыть подстилающий контроллер представленияRemoveFromSuperView UIImageView в ApplicationDidLaunch выполняется с задержкой

UIImage *captureImage = [self captureView:tabBar.view]; 
backgroundImage.image = [captureImage applyExtraLightEffect]; 
backgroundImage.frame = [[UIScreen mainScreen] applicationFrame]; 

[tabBar.view addSubview:backgroundImage]; 

Тогда я попросить сенсорные ID, который показывает красиво. Если аутентификация прошла успешно TouchID я хочу, чтобы удалить фоновое изображение с хорошей FADEOUT анимацией

[context evaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics 
     localizedReason:@"Are you the device owner?" 
        reply:^(BOOL success, NSError *error) { 
         if (error) { 
          UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error" 
                      message:@"There was a problem verifying your identity." 
                     delegate:nil 
                   cancelButtonTitle:@"Ok" 
                   otherButtonTitles:nil]; 
          [alert show]; 
          exit(0); 
          return; 
         } 
         if (success) { 
          NSLog(@"Passcode via TOUCH ID entered OK"); 

          [UIView animateWithDuration:0.5 
              animations:^{backgroundImage.alpha = 0;} 
              completion:^(BOOL finished){[[tabBar.view viewWithTag:13] removeFromSuperview];; }]; 
          // [UIView setAnimationDidStopSelector:@selector(startupAnimationDone:finished:context:)]; 
          [UIView setAnimationDelegate:self]; 
         } 

Теперь моя проблема заключается в том, что код запускается на выполнение сразу, но удаление кадра BackgroundImage занимает как 5-10 секунд выполнить. Это происходит на всех моих iDevices. Я не понимаю, почему существует задержка перед удалением супервизора. Кто-нибудь знает?

ответ

2

Блок завершения, вероятно, не возвращается в основной поток. Если это так, то представления будут вести себя непредсказуемо, если вы попытаетесь их изменить. Попробуйте поместить весь ваш код управления видимостью внутри блока dispatch_async(dispatch_get_main_queue()).

+0

Спасибо, что исправил мою проблему !! –

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