1

应该有这个方法来创建 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 方法中不建议的内容:

https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIView_Class/UIView/UIView.html#//apple_ref/doc/uid/TP40006816-CH3-SW217

使用经典时

 [view.layer renderInContext:UIGraphicsGetCurrentContext()];

一切都按预期进行,但我们当然已经知道这一点。

尝试时没有成功

- (UIView *)snapshotViewAfterScreenUpdates:(BOOL)afterUpdates
4

0 回答 0