2013-05-10 102 views
0

我用默認的showsCameraControls = YES在我的應用程序內部實現了相機,並且我遇到的問題是當用戶確認圖像是守護者時,它會用[self.delegate didFinishWithCamera]取消相機。我想留在相機視圖中,直到用戶完成拍照。如果沒有[self.delegate didFinishWithCamera],則應用程序在用戶確認要保留照片並且永不返回實時攝像頭供稿之後掛起。我該如何留在相機視圖中?感謝您的幫助!iPhone相機應用程序 - 如何留在相機視圖?

@implementation PHFPhotoOverlayVC 

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil 
{ 
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; 
    if (self) { 
     self.imagePickerController = [[UIImagePickerController alloc] init]; 
     self.imagePickerController.delegate = self; 
    } 
    return self; 
} 

- (void)setupImagePicker:(UIImagePickerControllerSourceType)sourceType 
{ 
    self.imagePickerController.sourceType = sourceType; 

    if (sourceType == UIImagePickerControllerSourceTypeCamera) 
    { 
     self.imagePickerController.mediaTypes = 
      [NSArray arrayWithObjects:(NSString *) kUTTypeImage, nil]; 
     self.imagePickerController.showsCameraControls = YES; 

#if false 
     if ([[self.imagePickerController.cameraOverlayView subviews] count] == 0) 
     { 
      CGRect overlayViewFrame = self.imagePickerController.cameraOverlayView.frame; 
      CGRect newFrame = CGRectMake(0.0, 
             CGRectGetHeight(overlayViewFrame) - 
             self.view.frame.size.height - 10.0, 
             CGRectGetWidth(overlayViewFrame), 
             self.view.frame.size.height + 10.0); 
      self.view.frame = newFrame; 
      [self.imagePickerController.cameraOverlayView addSubview:self.view]; 
     } 
#endif 
    } 
} 


#pragma mark - 
#pragma mark UIImagePickerControllerDelegate 

- (void) imagePickerController:(UIImagePickerController *)picker 
    didFinishPickingMediaWithInfo:(NSDictionary *)info 
{ 
    self.imagePickerController.mediaTypes = 
     [NSArray arrayWithObjects:(NSString *) kUTTypeImage, nil]; 
    self.imagePickerController.showsCameraControls = YES; 


    UIImage *image = [info valueForKey:UIImagePickerControllerOriginalImage]; 
    if (self.delegate) 
     [self.delegate didTakePicture:image]; 

    [self.delegate didFinishWithCamera]; 
} 

- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker 
{ 
    [self.delegate didFinishWithCamera]; 
} 

@end 

回答

0

爲了實現這一點,你必須實現自己的方法拍攝照片,因爲這個默認按鈕導致解僱自己的看法。

顯然,您可以通過設置showsCameraControls = NO來完成此操作,但是您必須重新創建您仍然需要的所有其他功能。

我從來沒有這樣做過,但應該可以離開showsCameraControls = YES,並使用cameraOverlayView將相同的「拍照」按鈕疊加到現有的按鈕上。如果你這樣做,你只需要讓該按鈕調用UIImagePickerViewController實例的方法-takePicture。

希望這就夠了,隨時發表評論並要求澄清。

0

你將需要實現一個自定義的相機 - 看看Apple's SquareCam example

您將使用AVFoundation,將能夠實現任何類型的自定義行爲時拍攝照片(包括只停留在該相機頁面) - 您甚至必須自己將其保存到照片庫(SquareCam示例顯示如何執行此操作)。這也意味着,如果您需要裁剪/調整大小控件,您必須自己創建它們,以及如果希望用戶在拍攝照片後能夠查看其照片,則還需要選擇器視圖(網格庫視圖)。

它可能是在中級以上的東西 - 我花了幾天的時間來實現,但如果你的應用程序以任何方式專注於照片,這絕對是一種方式。讓您完全控制相機的用戶界面和行爲。

哦,是的,你必須實現閃光燈按鈕,快門按鈕,快門效果,點擊對焦,以及其他任何你自己。 AVFoundation基本上給你一個直管鏡頭(比喻)。

相關問題