2011-06-29 28 views
3

我有一個自定義UIView,我已經創建顯示我的自定義按鈕和工具欄。當我第一次要求它顯示時,酒吧位於快門頂部(這很好)。但是在相機裝入後,快門會在它前面出現,然後打開。相機快門出現在自定義UIView?

如果你看看本機camera.app,它不會這樣做。工具欄停留在整個時間。這裏是我的代碼:

// .h 

UIImagePickerController *theCamera; 
@property (nonatomic, retain) UIImagePickerController *theCamera; 


// .m 

theCamera = [[UIImagePickerController alloc] init]; 
theCamera.delegate = self; 
theCamera.sourceType = UIImagePickerControllerSourceTypeCamera; 
theCamera.showsCameraControls = NO; 
theCamera.toolbar.alpha = 0; 
theCamera.navigationBarHidden = YES; 
theCamera.toolbarHidden = YES; 
theCamera.wantsFullScreenLayout = YES; 
theCamera.cameraViewTransform = CGAffineTransformMakeScale(1.25, 1.25); 

UIImageView *tabBarBack = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"tab_bar_back.png"]]; 
tabBarBack.frame = CGRectMake(0, 422, 320, 58); 
[customView addSubview:tabBarBack]; 

theCamera.cameraOverlayView = customView; 
[self presentModalViewController:theCamera animated:YES]; 

顯然有更多的按鈕,我添加到customView,但你的概念。

回答

0

AFAIK沒有直接的方法來做到這一點。如果您使用cameraOverlay,您將獲得完整屏幕的快門。
如何有一些替代方法(玩弄視圖層次結構),這將有助於您將預覽屏幕製作爲父視圖。 我不確定這種方法是否按照應用商店指南正確。
查看Hide/Show iPhone Camera Iris/Shutter animation以更好地瞭解如何實現此目的。

1

訂閱:

AVCaptureSessionDidStartRunningNotification 

這是光圈全開動畫開始時。如果在此期間添加cameraOverlayView,它將被虹膜適當覆蓋。它與PL ...私人通知同時發佈。這是一種成文的方法,不會冒着應用程序拒絕的風險。

0

在iOS 6+,如果您已加入控制器爲代表的的UIImagePickerController,此代碼應確保快門保持你的cameraOverlayView背後:

- (void) navigationController:(UINavigationController*) navigationController willShowViewController:(UIViewController*) viewController animated:(BOOL) animated { 
    self.imagePickerController.cameraOverlayView = ...; // your camera overlay view 
} 

我還沒有對測試版本iOS之前的iOS雖然。