2010-07-07 92 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