应该有这个方法来创建 UIView 快照
+ (UIImage *)screenshotWithView:(UIView *)view {
UIGraphicsBeginImageContextWithOptions(view.bounds.size, view.opaque, 0.0f);
if( [view respondsToSelector:@selector(drawViewHierarchyInRect:afterScreenUpdates:)] ) { // LP: iOS 7 only
[view drawViewHierarchyInRect:view.bounds
afterScreenUpdates:[view superview]?NO:YES];
} else {
[view.layer renderInContext:UIGraphicsGetCurrentContext()];
}
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return image;
}
一次执行此方法时,我们可以说类似
runTimer = [NSTimer scheduledTimerWithTimeInterval: 1.0f/30
target:self
selector:@selector(sendScreen)
userInfo:nil
repeats:repeat];
应用程序变得越来越慢。UI 不会冻结,并且会拍摄快照,但性能会急剧下降。
这正是 Apple 在 iOS7 的新 UI 方法中不建议的内容:
使用经典时
[view.layer renderInContext:UIGraphicsGetCurrentContext()];
一切都按预期进行,但我们当然已经知道这一点。
尝试时没有成功
- (UIView *)snapshotViewAfterScreenUpdates:(BOOL)afterUpdates