2016-02-23 1 views
0

У меня было приложение, на котором я снимаю снимок экрана UIWebView в реальном времени и отправляю его на сервер. Чтобы начать, я просто изменил цвет фона в представлении и сделал снимок экрана.Мой экран не отражает (не отвечает), снимая снимок экрана в iOS?

for (int i = 0; i <15; i++) 
    { 
     [NSThread sleepUntilDate:[NSDate dateWithTimeIntervalSinceNow:1.0]]; 
     NSLog(@"Delaying"); 

     self.view.backgroundColor=[self randomColor]; 


     CGSize size = CGSizeMake(self.view.frame.size.width,self.view.frame.size.height); 

     UIGraphicsBeginImageContextWithOptions(size, NO, [UIScreen mainScreen].scale); 

     CGRect rec = CGRectMake(0, 0,self.view.frame.size.width,self.view.frame.size.height); 
     [self.view drawViewHierarchyInRect:rec afterScreenUpdates:YES]; 

     UIImage *image = UIGraphicsGetImageFromCurrentImageContext(); 
     UIGraphicsEndImageContext(); 

Я делаю это вот так. Но экран не обновляется, он находится в каком-то замороженном режиме. Его единственное обновление после последнего снимка экрана с последним цветом. Может ли кто-нибудь помочь мне узнать, где я ошибаюсь? Мне нужно сделать снимок экрана наших экранов приложений в реальном времени.

+0

Если вы ждали немного дольше, то собака просто убила бы ваше приложение. :) – Eiko

ответ

4

[NSThread sleepUntilDate:[NSDate dateWithTimeIntervalSinceNow:1.0]]; заставит ваше приложение замораживать, потому что это приведет к основному потоку спать, если вы пытаетесь задержать принимая скриншот, используйте НОД в dispatch_after funcction

for (int i = 0; i <15; i++) 
{ 
    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(i * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ 
     //body of your forloop goes here 
    }); 
} 

Может хочет добавить я +-в задержка, если вы не хотите сразу же сделать первый снимок экрана