Just a Computer Graphics Studio & My Life

身為一個視覺創作者,無疑會想要把自己的作品給保存下來,之前常用的螢幕截圖似乎不敷使用,因為我們螢幕的長寬有限,而在其中內容則無限!這時候我不想花時間慢慢一頁一頁地截圖,更不想用影像處理軟體來接合,這時候可以怎麼做呢?

如果同時是個程式設計師,這一切就可以交由程式碼來幫我解決囉!可以先回顧文章:儲存視圖為影像 (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);

執行結果範例:

Save Scroll View to Image

以後我就不用花時間截圖留存啦~~~

參考:How to take an iPhone screenshot of entire view including parts off screen?Save UIImage to Photo Album with writeImageToSavedPhotosAlbum

廣告

發表留言

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

您的留言將使用 WordPress.com 帳號。 登出 / 變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 / 變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 / 變更 )

Google+ photo

您的留言將使用 Google+ 帳號。 登出 / 變更 )

連結到 %s

標籤雲

%d 位部落客按了讚: