美文网首页
ios调用系统相机和相册的方法

ios调用系统相机和相册的方法

作者: zcaaron | 来源:发表于2016-08-10 18:21 被阅读287次
    #import “CameraViewController.h”
    
    @interface CameraViewController ()
    
    @end
    
    @implementation CameraViewController
    
    – (void)viewDidLoad {
    
    [super viewDidLoad];
    
    NSArray *arr = @[@”调用相机”,@”调用图片库”,@”打开闪关灯”,@”关闭闪光灯”];
    
    for (int i = 0; i < 4; i++) {
    
    UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
    
    button.frame = CGRectMake(100, (100 + 10) * i + 50, 100, 100);
                                                                                                               
    [button setTitle:arr[i] forState:(UIControlStateNormal)];
    
    [button setTitleColor:[UIColor blackColor] forState:(UIControlStateNormal)];
    
    if (i == 0) {
    
    [button addTarget:self action:@selector(addCarema) forControlEvents:(UIControlEventTouchUpInside)];
    
    }else if (i == 1)
    
    {
    
    [button addTarget:self action:@selector(openPicLibrary) forControlEvents:(UIControlEventTouchUpInside)];
    
    }else if (i == 2)
    
    {
    
    [button addTarget:self action:@selector(openFlashlight) forControlEvents:(UIControlEventTouchUpInside)];
    
    }
    
    else if (i == 3)
    
    {
    
    [button addTarget:self action:@selector(closeFlashlight) forControlEvents:(UIControlEventTouchUpInside)];
    
    }
    
    [self.view addSubview:button];
    
    }
    
    // Do any additional setup after loading the view.
    
    }
    
    -(void)addCarema
    
    {
    
    //判断是否可以打开相机,模拟器无法使用此功能
    
    if ([UIImagePickerController isSourceTypeAvailable:(UIImagePickerControllerSourceTypeCamera)]) {
    
    UIImagePickerController *picker = [[UIImagePickerController alloc] init];
    
    picker.delegate = self;
    
    picker.allowsEditing = YES; //是否可编辑
    
    //摄像头
    
    picker.sourceType = UIImagePickerControllerSourceTypeCamera;
    
    [self presentViewController:picker animated:YES completion:nil];
    
    }else
    
    {
    
    //如果没有提示用户
    
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@”Error” message:@”你没有摄像头” delegate:nil cancelButtonTitle:@”Drat!” otherButtonTitles:nil, nil];
    
    [alert show];
    
    }
    
    }
    
    //拍摄完成后要执行的方法
    
    -(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
    
    {
    
    //得到图片
    
    UIImage *image = [info objectForKey:UIImagePickerControllerOriginalImage];
    
    //图片存入相册
    
    UIImageWriteToSavedPhotosAlbum(image, nil, nil, nil);
    
    [self dismissViewControllerAnimated:YES completion:nil];
    
    }
    
    //点击Cancel按钮后执行方法
    
    -(void)imagePickerControllerDidCancel:(UIImagePickerController *)picker
    
    {
    
    [self dismissViewControllerAnimated:YES completion:nil];
    
    }
    
    -(void)openPicLibrary
    
    {
    
    //相册是可以用模拟器打开的
    
    if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypePhotoLibrary]) {
    
    UIImagePickerController *picker = [[UIImagePickerController alloc] init];
    
    picker.delegate = self;
    
    picker.allowsEditing = YES;
    
    //打开相册选择照片
    
    picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
    
    [self presentViewController:picker animated:YES completion:nil];
    
    }else
    
    {
    
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@”Error” message:@”你没有摄像头” delegate:nil cancelButtonTitle:@”Drat!” otherButtonTitles:nil, nil];
    
    [alert show];
    
    }
    
    }
    
    -(void)openFlashlight
    
    {
    
    AVCaptureDevice *device = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
    
    if ([device hasTorch]) {
    
    [device lockForConfiguration:nil];
    
    [device setTorchMode:AVCaptureTorchModeOff];
    
    [device unlockForConfiguration];
    
    }
    
    }
    
    -(void)closeFlashlight
    
    {
    
    [self.AVSession stopRunning];
    
    }
    
    – (void)didReceiveMemoryWarning {
    
    [super didReceiveMemoryWarning];
    
    // Dispose of any resources that can be recreated.
    
    }
    
    /*
    
    #pragma mark – Navigation
    
    // In a storyboard-based application, you will often want to do a little preparation before navigation
    
    – (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    
    // Get the new view controller using [segue destinationViewController].
    
    // Pass the selected object to the new view controller.
    
    }
    
    */
    
    @end
    

    相关文章

      网友评论

          本文标题:ios调用系统相机和相册的方法

          本文链接:https://www.haomeiwen.com/subject/qyejsttx.html