簡體   English   中英

iPhone Camera App-如何保持在相機視圖中?

[英]iPhone Camera App - how to stay in Camera view?

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

@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

為了實現這一點,您將必須實現自己的拍照方法,因為此默認按鈕會導致視圖自行關閉。

顯然,您可以通過設置showsCameraControls = NO來做到這一點,但是隨后您將不得不重新創建仍然需要的所有其他功能。

我從來沒有做過,但是應該可以離開showsCameraControls = YES並使用cameraOverlayView在現有按鈕上簡單地層疊一個相同的“拍攝圖片”按鈕。 如果這樣做,則只需要讓該按鈕從UIImagePickerViewController實例中調用方法-takePicture。

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

您將需要實現自定義相機-查看Apple的SquareCam示例

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

它可能是圍繞中級水平的東西-我花了幾天的時間來實現,但是如果您的應用程序以任何方式都專注於照片,那肯定是要走的路。 使您可以完全控制相機的UI和行為。

哦,是的,您還必須實現閃光燈按鈕,快門按鈕,快門效果,點擊對焦以及您自己的其他任何功能。 AVFoundation基本上為您提供了一條通向攝像機鏡頭的直管(如圖所示)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM