簡體   English   中英

UIImagePicker僅適用於iPhone 6 plus上的前置攝像頭

[英]UIImagePicker only works with front camera on iPhone 6 plus

使用以下代碼:

- (void) viewDidAppear:(BOOL)animated {

    [super viewDidAppear:animated];

    if (!self.alreadyAppeared) {

        [self performSelector:@selector(showCamera) withObject:nil afterDelay:0.3];
    }

}

-(void)showCamera
{
    UIImagePickerController *picker = [[UIImagePickerController alloc] init];
    picker.sourceType = UIImagePickerControllerSourceTypeCamera;
    picker.showsCameraControls = YES;
    picker.cameraDevice = UIImagePickerControllerCameraDeviceFront;
    picker.delegate = self;

    [self presentViewController: picker animated:YES completion:NULL];
}

我的應用程序完美運行。 但是,如果我更改

picker.cameraDevice = UIImagePickerControllerCameraDeviceFront;

picker.cameraDevice = UIImagePickerControllerCameraDeviceRear;

我失去了形象。 以下代碼是我如何捕獲圖像並在應用程序中設置imageview的方法。 我使用Nav控制器返回到應用程序:

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {

    UIImage *chosenImage = info[UIImagePickerControllerOriginalImage];
    self.cf.imageView.image = chosenImage;

    NSLog(@"%@",chosenImage);
    [picker dismissViewControllerAnimated:YES completion:NULL];

    // pop back to previous controller
    NSArray *myControllers = self.nc.viewControllers;
    int previous = (int)myControllers.count - 2;
    UIViewController *previousController = [myControllers objectAtIndex:previous];

    [self.nc popToViewController:previousController animated:YES];

}

同樣,這在我的iPad上也可以正常工作,並且使用前置攝像頭也可以正常工作。 即使使用后置攝像頭,所選圖像(我記錄的圖像)也顯示正確。 有人知道為什么后置攝像頭設置會產生這種影響嗎?

另一個項目:我收到一條非常令人討厭的消息,其中包含約1000種不同的解釋,但沒有一個能擺脫該消息:

快照未渲染的視圖將導致快照為空。 確保在快照之前或屏幕更新后快照至少已渲染一次視圖。

使用iPhone 6和iPhone 6 Plus時,每次離開相機控件(選擇器)時,都必須防止重新加載視圖。 我的應用程序使用一個View Controller創建一個動態的視圖,它是一種表單。 該表單上的每個字段都從Web服務中提取,並成為該表單的子視圖。 其中包括相機字段,我使用viewcontroller和xib來構建該字段。 表單視圖通過drawRect方法構建整個表單。 相機字段每次導航離開時都會嘗試調用該方法。 我阻止它重新加載,這似乎已經解決了問題。

更加標准的應用程序可以在主視圖控制器的viewDidAppear方法中動態創建相機字段。 如果將主視圖控制器設置為camera字段的委托,則當它離開選擇器時,它仍將調用viewDidAppear。 必須防止這種情況,否則您將丟失圖像。

真正有趣的是,這僅發生在iPhone 6和6 plus上。 所有其他設備都不會嘗試重新加載視圖...去吧。

暫無
暫無

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

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