2010-07-24 15 views
0

我正在嘗試拍攝沒有疊加ontop的相機圖片的全屏圖像。iPhone SDK - 如何在使用UIGetScreenImage之前隱藏cameraOverlayView?

在我的覆蓋控制器我試圖隱藏覆蓋用這個代碼行:

[self.view setHidden:YES]; 
[self.view setNeedsDisplay]; 
CGImageRef screen = UIGetScreenImage(); 
UIImage* image = [UIImage imageWithCGImage:screen]; 
CGImageRelease(screen); 
self.view.hidden = NO; 

UIGetScreenImage仍顯示疊加UI。

有什麼辦法可以做到這一點嗎?

回答

0

您需要設置UIImagePickerController實例的cameraOverlayView屬性,然後使用takePicture方法獲取當前圖像。在您的代理,你需要實現:

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info { 
    [self closeImagePickerController]; 

    // Get the edited or original image 
    UIImage *image = [info objectForKey:UIImagePickerControllerEditedImage]; 
    if (image == nil) 
     image = [info objectForKey:UIImagePickerControllerOriginalImage]; 

    // Do something with the image... 
} 

蘋果再次私有API的UIGetScreenImage(),所以你不能使用了。

+0

這不會像UIGetScreenImage這樣的截圖。雖然這會起作用,但缺點是它比較截圖的方式非常慢(至少在iOS 3中是這樣)。 – Rengers 2010-07-24 16:42:11

+0

我正在閱讀蘋果允許使用UIGetScreenImage的地方,直到他們將引入公共API方法? – dan 2010-07-24 16:54:15