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是空的?在运行应用程序之前我应该如何添加照片检查此链接-