您的位置:首页 > 移动开发 > IOS开发

IOS开发中使用照相机功能的实现

2014-01-08 10:14 621 查看
在程序中使用照相机,或者从相册中选择需要的照片,可以按照以下的步骤实现。

1.生成一个UIImagePickerController对象

2.用presentModalViewController来显示它

3.实现UIImagePickerControllerDelegate的方法

举个例子,此例子的功能如下:

点击一个照相按钮,弹出一个ActionSheet让用户选择是从相册选择照片还是用相机新照一张照片。

代码如下:

1.点击照相按钮后弹出ActionSheet

- (void)takePhotoBtnTapped:(UIButton *)sender {

  //Show Action Sheet: 1. Take Photo 2. Select Photo From Album

  UIActionSheet *photoBtnActionSheet =

  [[UIActionSheet alloc] initWithTitle:nil

                              delegate:self

                     cancelButtonTitle:@"Cancel"

                destructiveButtonTitle:nil

                     otherButtonTitles:@"Photo Library",@"Take Photo", nil];

  [photoBtnActionSheet setActionSheetStyle:UIActionSheetStyleBlackOpaque];

  [photoBtnActionSheet showInView:[self.view window]];
}

2. 在header里添加以下三个Delegate

UIActionSheetDelegate

UIImagePickerControllerDelegate

UINavigationControllerDelegate

3.UIActionSheetDelegate的实现

- (void)actionSheet:(UIActionSheet *)actionSheet
clickedButtonAtIndex:(NSInteger)buttonIndex {

  NSLog(@"Action Sheet Button Index: %d",buttonIndex);

  if (buttonIndex == 0) {

    //Show Photo Library

    @try {

      if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeSavedPhotosAlbum]) {

        UIImagePickerController *imgPickerVC = [[UIImagePickerController alloc] init];

        [imgPickerVC setSourceType:UIImagePickerControllerSourceTypePhotoLibrary];

        [imgPickerVC.navigationBar setBarStyle:UIBarStyleBlack];

        [imgPickerVC setDelegate:self];

        [imgPickerVC setAllowsEditing:NO];

        //显示Image Picker

        [self presentModalViewController:imgPickerVC animated:NO];

      }else {

        NSLog(@"Album is not available.");

      }

    }

    @catch (NSException *exception) {

      //Error

      NSLog(@"Album is not available.");

    }

  }

  if (buttonIndex == 1) {

    //Take Photo with Camera

    @try {

      if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) {

        UIImagePickerController *cameraVC = [[UIImagePickerController alloc] init];

        [cameraVC setSourceType:UIImagePickerControllerSourceTypeCamera];

        [cameraVC.navigationBar setBarStyle:UIBarStyleBlack];

        [cameraVC setDelegate:self];

        [cameraVC setAllowsEditing:NO];

        //显示Camera VC

        [self presentModalViewController:cameraVC animated:NO];

        

      }else {

        NSLog(@"Camera is not available.");

      }

    }

    @catch (NSException *exception) {

      NSLog(@"Camera is not available.");

    }

  }
}

4.UIImagePickerControllerDelegate的实现

- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker{

  NSLog(@"Image Picker Controller canceled.");

  //Cancel以后将ImagePicker删除

  [self dismissModalViewControllerAnimated:NO];
}

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

  NSLog(@"Image Picker Controller did finish picking media.");

  //TODO:选择照片或者照相完成以后的处理

  

  [self dismissModalViewControllerAnimated:NO];
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: