在SpringBoard进程里通过代码截屏后手机会变卡的问题。。

看了《iOS中正确的截屏姿势》这篇文章后,在SpringBoard进程里使用下面的方法截屏:

UIView *snapshot = [UIScreen mainScreen] snapshotViewAfterScreenUpdates:YES];
    UIGraphicsBeginImageContextWithOptions(snapshot.bounds.size, NO, 0.0);
    [snapshot drawViewHierarchyInRect:snapshot.bounds afterScreenUpdates:YES];
    UIImage *image = UIGraphicsGetImageFromCurrentImageContext();

截完屏后,手机UI界面会变得很奇怪,始终感觉有一层layer在最上面,有动画转场的时候会感觉有一层很生硬地消失。重启SpringBoard又恢复正常了。。。
尝试最后将[snapshot release]掉会闪退。

我猜测,UIGraphicsBeginImageContextWithOptions调用完之后还需要调用个名字里带end的函数,有可能是UIGraphicsEndImageContextWithOptions,来释放资源

噢,UIGraphicsEndImageContext();最后还有这句复制掉了。
是调用了的呢。。。

那就不知道了,本来就是私有代码,对context和资源的处理可能不完整,导致UI卡顿。自己逆向看看系统是怎么做的吧