需要在运行时创建视图的快照

时间:2010-07-07 15:34:01

标签: iphone uiview uiimage

我需要拍摄当前ipad视图的快照。该视图加载并播放视频。 我发现这个功能几乎可以很好地工作。

- (UIImage*)captureView:(UIView *)view {
    CGRect rect =  [[UIScreen mainScreen] bounds];   
    UIGraphicsBeginImageContext(rect.size);  
    CGContextRef context = UIGraphicsGetCurrentContext();    
    [view.layer renderInContext:context];    
    UIImage *img = UIGraphicsGetImageFromCurrentImageContext();  
    UIGraphicsEndImageContext();     
    return img;
}

(来自:LINK

问题是,播放视频的当前帧未被捕获,仅捕获视频但没有视频内容。在保存图像之前,我是否忘记更新显示屏或其他任何内容?是否有一个特殊的函数可以读取最新的屏幕值?

感谢您的时间和帮助。

1 个答案:

答案 0 :(得分:0)

您是否尝试过使用 UIGetScreenImage ()函数?

它是私有的,但Apple允许使用它,因此即使您使用它,您的应用也会在App Store中得到验证。

你只需要声明它的原型,所以编译器不会抱怨:

CGImageRef UIGetScreenImage( void );

注意:您可以使用以下NSImage方法从CGImageRef创建NSImage:

- ( id )initWithCGImage: ( CGImageRef )cgImage size:( NSSize )size;