2015-10-16 43 views
0

我有一个方法,编程方式将采取截图[self makeScreenshot]。但是有时候,例如当发生旋转时,其结果可能会非常难看,因为黑色部分会变得很难看。所以我试图做一个完成的方法,等待视图控制器的动画完成,这样屏幕截图可以安全并且总是很好看。这个电话可能看起来像这样:等待视图控制器动画完成之前采取屏幕截图

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

但我无法弄清楚这种方法的代码将如何看起来像。有什么建议么?

我试图放置屏幕截图代码- (void)viewDidLayoutSubviews - 方法,它没有工作。而且我也不想使用任何旋转回调方法,因为问题也发生在其他场合。

+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

相关问题