2015-10-16 4 views
0

У меня есть метод, который программно сделает снимок экрана [self makeScreenshot]. Но иногда, когда происходит чередование, результат может быть очень уродливым с черными частями в нем. Поэтому я пытаюсь сделать метод с завершением, который будет ждать завершения анимации диспетчера представлений, чтобы скриншоты можно было сделать безопасно и всегда выглядеть красиво. Вызов будет возможно выглядеть примерно так:Подождите, пока анимация диспетчеров просмотров закончится, прежде чем снимать снимок экрана

[self methodWithCompletionWhenAnimationsIsDone:^(BOOL finished) { 
     // now it's safe to make the screenshot. 
     UIImage *myScreenshot = [self makeScreenshot]; 
    }]; 

Но я не могу понять, как код для такого метода будет выглядеть. Какие-либо предложения?

Я попытался установить код снимка экрана - (void)viewDidLayoutSubviews -method, и это не сработало. И я не хочу использовать методы обратного вызова вращения, потому что проблема возникает и в других случаях.

+0

Вы говорите о анимации вращения или о своих пользовательских анимациях? –

+0

Какие анимации вы рассматриваете? Анимация завершена? –

+0

Да, но у меня есть разделенный вид, поэтому другие анимации, например, когда отображается мастер-представление/исчезает, также. Я говорю обо всех анимациях, которые контроллер представления обрабатывает за сценой. – turingtested

ответ

-1

Может быть, вы пытаетесь выполнить его в фоновом потоке

[self methodWithCompletionWhenAnimationsIsDone:^(BOOL finished) { 
    dispatch_async(dispatch_get_main_queue(), ^{ 
     UIImage *myScreenshot = [self makeScreenshot]; 
    }); 
}]; 
0

Я не знаю, какой метод анимации вы используете, но я дам вам пример по умолчанию UIView анимации с завершением:

[UIView animateWithDuration:1.0 animations:^{ 
    /* Some animation here */ 
} completion:^(BOOL finished) { 
    UIImage *myScreenshot = [self makeScreenshot]; 
}]; 
+0

Завершающий блок работает уже на основной нити; если это не так, вам не разрешат использовать прикованные анимации. –

+0

Делает смысл. Я хочу отредактировать свой ответ, спасибо. – Soberman

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