2015-10-16 42 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

相關問題