身為一個視覺創作者,無疑會想要把自己的作品給保存下來,之前常用的螢幕截圖似乎不敷使用,因為我們螢幕的長寬有限,而在其中內容則無限!這時候我不想花時間慢慢一頁一頁地截圖,更不想用影像處理軟體來接合,這時候可以怎麼做呢?
如果同時是個程式設計師,這一切就可以交由程式碼來幫我解決囉!可以先回顧文章:儲存視圖為影像 (Save View to Image)。
這個例子是使用table view來截圖,所以我們的方法是可以傳入目標的view(可以捲動的元件)和目標的size(想畫出來的長高),最後回傳image能再做其它處理(此例為儲存到相簿)。
/**
Theme: Save Scroll View to Image
IDE: Xcode 5
Language: Objective C
Date: 103/03/20
Author: HappyMan
Blog: https://cg2010studio.wordpress.com/
*/
// 方法實作
-(UIImage *)captureView:(UIView *)view inSize:(CGSize)size
{
UIGraphicsBeginImageContext(size);
[self.displayTableView scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0] atScrollPosition:UITableViewScrollPositionTop animated:NO];
[self.displayTableView.layer renderInContext:UIGraphicsGetCurrentContext()];
int rows = [self.displayTableView numberOfRowsInSection:0];
int numberofRowsInView = 3;
for (int i = 0; i < rows/numberofRowsInView; i++) {
[self.displayTableView scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:(i+1)*numberofRowsInView inSection:0] atScrollPosition:UITableViewScrollPositionTop animated:NO];
[self.displayTableView.layer renderInContext:UIGraphicsGetCurrentContext()];
}
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return image;
}
// 如何使用 (儲存到相簿)
UIImageWriteToSavedPhotosAlbum([self captureView:self.displayTableView inSize:self.displayTableView.contentSize],nil,nil,nil);
執行結果範例:
以後我就不用花時間截圖留存啦~~~
參考:How to take an iPhone screenshot of entire view including parts off screen?、Save UIImage to Photo Album with writeImageToSavedPhotosAlbum。

隨意留個言吧:)~