今天在開發過程中遇到了一個問題,就是需要對某個控件單獨進行截圖。如果是對螢幕進行截圖,相信大家都很熟悉,但是對于單獨的一個控件呢?比如就以最通常的UITableViewCell來說,因為cell是最常用的控件之一,如果懂得了它的截圖,那麼其他控件也就迎刃而解。
這點蘋果似乎已經幫我們想好了,如果您支援的iOS7及以上的系統,那麼隻需要調用一行代碼即可。
UIView *snapshot = [theCell snapshotViewAfterScreenUpdates:YES];
是不是很友善?
但是讓我們再看看這個方法的定義:
- (UIView *)snapshotViewAfterScreenUpdates:(BOOL)afterUpdates NS_AVAILABLE_IOS(7_0);
我擦!隻支援iOS7及以上!那iOS6可腫麼辦?一運作豈不是會崩潰?
表着急~iOS6上我們自有辦法~
CGRect rect = [self rectForRowAtIndexPath:self.indexOfTheCell];
UIGraphicsBeginImageContext(rect.size);
CGContextRef context = UIGraphicsGetCurrentContext();
[theCell.layer renderInContext:context];
UIImage *img = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
UIImageView *imageView = [[UIImageView alloc] initWithFrame:rect];
imageView.image = img;
哈哈哈。。我們得到啦!
是以我們隻需要設定一個分支,接可以啦~