关于iPhone:UIGetScreenImage-专用API

UIGetScreenImage - Private API

但是,我在应用程序中使用的是UIGetScreenImage,因为大家都知道Apple拒绝使用私有API的应用程序。 我已经研究了使用拍照实现此目的的其他方法,但是您会得到不同大小的图像以及令人讨厌的快照声音。 Microsoft标签。 Quickmark和Redalaser都使用UIGetScreenImage(很明显),但是我想合法地这样做。 有没有人有任何建议。 非常感激。


当前,UIGetScreenImage是Apple推荐的捕获屏幕的方法。 这是一种私有方法,但是他们在开发人员论坛中表示,除非添加等效的public-API,否则使用它是可以接受的。

更新:从iOS 4开始,不再允许UIGetScreenImage; 我相信现在已批准的拍照方式是使用AVFoundation框架。


这可能行得通...我认为这是另一个SO问题的答案。

1
2
3
4
5
6
7
8
9
10
11
-(UIImage *)captureView:(UIView *)view {
    CGRect screenRect = [[UIScreen mainScreen] bounds];    
    UIGraphicsBeginImageContext(screenRect.size);
    CGContextRef ctx = UIGraphicsGetCurrentContext();
    [[UIColor blackColor] set];
    CGContextFillRect(ctx, screenRect);
    [view.layer renderInContext:ctx];
    UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    return newImage;
}


最好的(也是最慢的)方法是向Apple提出功能请求。