Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/101.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 在iphone模拟器上使用UIImagePickerController_Ios_Camera_Ios Simulator_Uiimagepickercontroller_Photo Gallery - Fatal编程技术网

Ios 在iphone模拟器上使用UIImagePickerController

Ios 在iphone模拟器上使用UIImagePickerController,ios,camera,ios-simulator,uiimagepickercontroller,photo-gallery,Ios,Camera,Ios Simulator,Uiimagepickercontroller,Photo Gallery,我有一种方法,可以从画廊或照相机中拍照 -(IBAction) getPhoto:(id) sender { UIImagePickerController * picker = [[UIImagePickerController alloc] init]; picker.delegate = self; if((UIButton *) sender == choosePhotoBtn) { picker.sourceType = UIImagePickerCont

我有一种方法,可以从画廊或照相机中拍照

-(IBAction) getPhoto:(id) sender {
  UIImagePickerController * picker = [[UIImagePickerController alloc] init];
  picker.delegate = self;

  if((UIButton *) sender == choosePhotoBtn) {
        picker.sourceType = UIImagePickerControllerSourceTypeSavedPhotosAlbum;
  } else {
        picker.sourceType = UIImagePickerControllerSourceTypeCamera;
  }

  [self presentModalViewController:picker animated:YES];
}
但是当我在模拟器上运行它时,代码不起作用。而且它在
picker.sourceType=UIImagePickerController源类型SavedPhotosAlbum
picker.sourceType=UIImagePickerController源类型Camera

问题是在模拟器中还是在代码中?

试试这个

 if([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypePhotoLibrary])
        {
            picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
        }
        else
        {
            picker.sourceType = UIImagePickerControllerSourceTypeSavedPhotosAlbum;
        }
        [self.navigationController presentModalViewController:picker animated:NO];

如果您正在为iPad创建应用程序。您必须在popOver控件中显示库。

在模拟器中,您的picker.sourceType=UIImagePickerControllerSourceTypeCamera不会被调用,因为模拟器中没有可用的摄像头。此外,检查源类型是否可用以避免崩溃也是一种很好的做法

#import <MobileCoreServices/UTCoreTypes.h>
….
 if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera])
        {
            UIImagePickerController *imagePickerCamera =[[UIImagePickerController alloc] init];
            imagePickerCamera.delegate = self;
            imagePickerCamera.mediaTypes = [NSArray arrayWithObjects:(NSString *) kUTTypeImage,nil];
            imagePickerCamera.allowsEditing = YES;
            imagePickerCamera.sourceType = UIImagePickerControllerSourceTypeCamera;

            [self presentViewController:imagePickerCamera  animated:YES completion:nil];
        }

    else if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeSavedPhotosAlbum])
        {
            UIImagePickerController *imagePickerAlbum =[[UIImagePickerController alloc] init];
            imagePickerAlbum.delegate = self;
            imagePickerAlbum.mediaTypes = [NSArray arrayWithObjects:(NSString *) kUTTypeImage,nil];
            imagePickerAlbum.allowsEditing = YES;
            imagePickerAlbum.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;

            [self presentViewController:imagePickerAlbum animated:YES completion:nil];
        }
#导入
….
如果([UIImagePickerController IsSourceType可用:UIImagePickerController SourceType相机])
{
UIImagePickerController*imagePickerCamera=[[UIImagePickerController alloc]init];
imagePickerCamera.delegate=self;
imagePickerCamera.mediaTypes=[NSArray arrayWithObjects:(NSString*)kUTTypeImage,无];
imagePickerCamera.allowsEditing=是;
imagePickerCamera.sourceType=UIImagePickerControllerSourceTypeCamera;
[self-presentViewController:imagePickerCamera动画:是完成:无];
}
else if([UIImagePickerController IsSourceType可用:UIImagePickerController SourceType SavedPhotosAlbum])
{
UIImagePickerController*ImagePickerAbum=[[UIImagePickerController alloc]init];
imagepickerabum.delegate=self;
imagePickerAlbum.mediaTypes=[NSArray arrayWithObjects:(NSString*)kUTTypeImage,无];
imagePickerAlbum.allowsEditing=是;
ImagePickerAbum.sourceType=UIImagePickerController源类型PhotoLibrary;
[self-presentViewController:imagePickerAlbum动画:是完成:无];
}

与上述答案类似,但我发现这更容易。如果设备没有摄像头(如模拟器),则显示弹出警报。Sam代码,不同用法:

//button if to take a photo
- (IBAction)takePhoto:(id)sender {

//checks if device has a camera
    if (![UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) {
        UIAlertView *noCameraAlert = [[UIAlertView alloc] initWithTitle:@"Error" message:@"You don't have a camera for this device" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];

        //shows above alert if there's no camera
        [noCameraAlert show];
    }

    //otherwise, show a modal for taking a photo
    else {
        UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init];
        imagePicker.delegate = self;
        imagePicker.allowsEditing = YES;
        imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera;

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

Swift 3/4/5verison:

if UIImagePickerController.isSourceTypeAvailable(.camera) {
    picker.sourceType = .camera
}
else {
    picker.sourceType = .savedPhotosAlbum // or .photoLibrary
}
Swift 2版本:

if UIImagePickerController.isSourceTypeAvailable(.Camera) {
    picker.sourceType = .Camera
}
else {
    picker.sourceType = .SavedPhotosAlbum // or .PhotoLibrary
}

模拟器中,您不能使用
cameraCaptureMode
ShowScameraControl

以下是答案:您使用的是iPhone模拟器还是iPad模拟器。iPhone模拟器。我将“UIImagePickerControllerSourceTypeSavedPhotosAlbum”更改为“UIImagePickerControllerSourceTypePhotoLibrary”,但库为空,在应用程序中使用它们之前,应该在哪里添加照片是的,这是因为您使用的是模拟器。[self.navigationController presentModalViewController:picker动画:否]-不起作用,但[self-presentModalViewController:picker animated:YES]可以。关于sourceType,我也有同样的问题。为什么UIImagePickerControllerSourceTypePhotoLibrary是空的?在运行应用程序之前我应该如何添加照片检查此链接-