2010-07-07 41 views
2

我需要拍摄我当前的ipad-view的快照。该视图加载并播放视频。 我发现这个功能几乎真的很好。需要在运行时创建视图的快照

- (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

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

感谢您的时间和帮助。

+0

见在这个问题的答案:http://stackoverflow.com/questions/3129352/need-to-capture-uiview-into-a-uiimage-including-all-subviews – Logachu 2011-09-30 04:27:14

回答

0

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

它是私密的,但Apple允许使用它,所以即使您使用它,您的应用也将针对App Store进行验证。

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

CGImageRef UIGetScreenImage(void); 

注意:您可以创建从一个CGImageRef NSImage中具有以下NSImage中方法:

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

几个开发人员的应用程序已被拒绝使用该功能。有些人被抓住了,有些人却没有。 请参阅: http://stackoverflow.com/questions/1531815/takepicture-vs-uigetscreenimage – 2010-07-10 22:38:27

+0

如果我没有错3.2 + SDK有MPMoviePlayerController它提供了一个公共的方法来获取视频在任何给定的实例。如果您正在寻找完整视图的ScreenShot,请忽略此操作。 – RVN 2010-08-19 11:24:36