[英]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.