技术内容:分别读取相册以及调取相机,将图片显示到imageView上
布局:
1.创建imageView 和 button 并为button一个关联pickerImage的事件
- <div style="text-align: left;"><span style="font-family: Helvetica; -webkit-text-stroke-width: initial;"> self.aImageView = [[UIImageView alloc]initWithFrame:CGRectMake(60, 100, 200, 200)];</span></div> self.aImageView.backgroundColor = [UIColor redColor];
- self.aImageView.userInteractionEnabled = YES;
-
- self.aButton = [[UIButton alloc]initWithFrame:CGRectMake(98, 350, 125, 25)];
- self.aButton.backgroundColor = [UIColor blueColor];
- [self.aButton addTarget:self action:@selector(pickerImage:) forControlEvents:(UIControlEventTouchUpInside)];
- [self.aButton setTitle:@"选择图像" forState:(UIControlStateNormal)];
-
- [self.view addSubview:self.aButton];
- [self.view addSubview:self.aImageView];
- [self.aButton release];
- [self.aImageView release];
-
-
- [self addTapGestureOnImageView];
2.因为有的场景需要直接点击图片更换别的图片,所以在imageView上添加轻拍动作
- - (void)addTapGestureOnImageView{
- UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(pickerImage:)];
- [self.aImageView addGestureRecognizer:tap];
- [tap release];
- }
3.实现轻拍动作中方法
- - (void)pickerImage:(UIButton *)button{
-
-
-
-
-
-
- UIActionSheet *actionSheet = [[UIActionSheet alloc]initWithTitle:nil delegate:self cancelButtonTitle:@"取消" destructiveButtonTitle:@"拍照" otherButtonTitles:@"从相册选择图片", nil nil];
-
- [actionSheet showInView:self.view];
- [actionSheet release];
- }
4.实现action代理协议中的方法
- - (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex{
- switch (buttonIndex) {
- case 0:
-
- [self pickerPictureFromCamera];
- break;
- case 1:
- [self pickerPictureFromPhotosAlbum];
- default:
- break;
- }
- }
4.1从摄像头获取图片
- - (void)pickerPictureFromCamera{
-
-
-
- if ([UIImagePickerController isCameraDeviceAvailable:UIImagePickerControllerCameraDeviceFront]) {
- NSLog(@"用前置摄像头");
-
- self.imagePC = [[UIImagePickerController alloc]init];
- self.imagePC.cameraDevice = UIImagePickerControllerCameraDeviceFront;
- [self.imagePC release];
-
- }else if ([UIImagePickerController isCameraDeviceAvailable:UIImagePickerControllerCameraDeviceRear]){
- NSLog(@"用后置摄像头");
-
- self.imagePC = [[UIImagePickerController alloc]init];
- self.imagePC.cameraDevice = UIImagePickerControllerCameraDeviceRear;
- [self.imagePC release];
-
- }else{
- UIAlertView *alertView = [[UIAlertView alloc]initWithTitle:@"调用摄像头失败" message:@"请从手机相册中选取照片" delegate:self cancelButtonTitle:@"确定" otherButtonTitles:nil, nil nil];
- [alertView show];
- [alertView release];
- }
-
-
- UIImagePickerController *imagePicker = [[UIImagePickerController alloc]init];
-
-
- imagePicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
-
- imagePicker.allowsEditing = YES;
-
- imagePicker.delegate = self;
-
- [self presentViewController:imagePicker animated:YES completion:nil];
-
- [imagePicker release];
-
- }
4.2从手机的图片库获取图片
- - (void)pickerPictureFromPhotosAlbum{
-
- UIImagePickerController *imagePicker = [[UIImagePickerController alloc]init];
-
-
- imagePicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
-
- imagePicker.allowsEditing = YES;
-
- imagePicker.delegate = self;
-
- [self presentViewController:imagePicker animated:YES completion:nil];
-
- [imagePicker release];
- }
5.将选取好的照片保存到详情页的方法
- - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info{
-
- self.aImageView.image = [info objectForKey:UIImagePickerControllerEditedImage];
-
- [self dismissViewControllerAnimated:YES completion:nil];
- }
iOS中 读取相册,调用系统相机 技术分享
原文:http://www.cnblogs.com/Yishu/p/4878716.html