我有一种方法可以通过编程方式截取屏幕[self makeScreenshot]
。但有时,例如,当旋转发生时,结果可能非常难看,其中包含黑色部分。因此,我正在尝试使用等待视图控制器动画完成的完成方法,以便可以安全地制作屏幕截图并始终保持良好状态。电话可能看起来像这样:
[self methodWithCompletionWhenAnimationsIsDone:^(BOOL finished) {
// now it's safe to make the screenshot.
UIImage *myScreenshot = [self makeScreenshot];
}];
但我无法弄清楚这种方法的代码是什么样的。有什么建议吗?
我试图将截屏代码放在- (void)viewDidLayoutSubviews
- 方法中,但它无效。而且我也不想使用任何旋转回调方法,因为问题也出现在其他场合。
答案 0 :(得分:0)
我不知道你正在使用哪种动画方法,但我会给你一个完整的默认UIView
动画示例:
[UIView animateWithDuration:1.0 animations:^{
/* Some animation here */
} completion:^(BOOL finished) {
UIImage *myScreenshot = [self makeScreenshot];
}];
答案 1 :(得分:-1)
也许您尝试在后台线程中执行它
[self methodWithCompletionWhenAnimationsIsDone:^(BOOL finished) {
dispatch_async(dispatch_get_main_queue(), ^{
UIImage *myScreenshot = [self makeScreenshot];
});
}];