如何自定义uiimagepickercontroller

 我来答
星月小木木
2015-12-31 · TA获得超过3.2万个赞
知道大有可为答主
回答量:2.4万
采纳率:0%
帮助的人:9902万
展开全部
  1.设定imagePacker参数
  // Transform values for full screen support:
  #define CAMERA_TRANSFORM_X 1
  // this works for iOS 4.x
  #define CAMERA_TRANSFORM_Y 1.24299

  -(void)viewWillAppear:(BOOL)animated{
  
  UIImagePickerController *imagePickerController = [[UIImagePickerController alloc] init];
  imagePickerController.delegate = self;

  imagePickerController.sourceType = UIImagePickerControllerSourceTypeCamera;
  imagePickerController.showsCameraControls = NO;
  imagePickerController.navigationBarHidden = YES;
  imagePickerController.wantsFullScreenLayout = YES;
  imagePickerController.cameraViewTransform =CGAffineTransformScale(imagePickerController.cameraViewTransform, CAMERA_TRANSFORM_X,CAMERA_TRANSFORM_Y);
  cameraViewController = [[CameraOverlayViewControlleralloc]initWithNibName:@"CameraOverlayViewController" bundle:nil];
  imagePickerController.cameraOverlayView = cameraViewController.view;
  cameraViewController.pickerController = imagePickerController;
  [self presentModalViewController:imagePickerController animated:NO];
  [imagePickerController release];
  }

  2.代理方法

  -(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info{
  [picker dismissModalViewControllerAnimated:NO];
  UIImage* image = [info valueForKey:UIImagePickerControllerOriginalImage];
  BeautifyPhotoViewController* beautifyPhotoViewController = [[BeautifyPhotoViewControlleralloc]initWithNibName:@"BeautifyPhotoViewController" bundle:nil];
  beautifyPhotoViewController.photoImage = image;
  [self.navigationController pushViewController:beautifyPhotoViewController animated:YES];
  [beautifyPhotoViewController release];
  }

  3.overlayView对应的controller

  #import "CameraOverlayViewController.h"

  @interface CameraOverlayViewController ()

  @end

  @implementation CameraOverlayViewController

  @synthesize pickerController;
  @synthesize cameraScaleBtn;
  @synthesize titleImageView;
  @synthesize flashModeBtn;
  @synthesize deviceModeBtn;
  @synthesize photoBtn;

  - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
  {
  self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
  if (self) {
  // Custom initialization
  [self getAllPhotoImages];
  }
  return self;
  }

  - (void)viewDidLoad
  {
  [super viewDidLoad];
  isOneToOne = YES;
  imageArray = [[NSMutableArray alloc]init];
  shadowView = [[ShadowView alloc]initWithRect:CGRectMake(0, 80, 320, 320)];
  [self.view addSubview:shadowView];
  [self.view sendSubviewToBack:shadowView];
  [shadowView release];
  // Do any additional setup after loading the view from its nib.
  }

  - (void)viewDidUnload
  {
  [super viewDidUnload];
  // Release any retained subviews of the main view.
  // e.g. self.myOutlet = nil;
  }
  //闪光灯
  -(IBAction)cameraTorchOn:(id)sender{
  if (pickerController.cameraFlashMode ==UIImagePickerControllerCameraFlashModeAuto) {
  pickerController.cameraFlashMode = UIImagePickerControllerCameraFlashModeOn;
  }else {
  pickerController.cameraFlashMode = UIImagePickerControllerCameraFlashModeOff;
  }
  }

  //前后摄像头
  - (IBAction)swapFrontAndBackCameras:(id)sender {
  if (pickerController.cameraDevice ==UIImagePickerControllerCameraDeviceRear ) {
  pickerController.cameraDevice = UIImagePickerControllerCameraDeviceFront;
  }else {
  pickerController.cameraDevice = UIImagePickerControllerCameraDeviceRear;
  }
  }
  //改变拍摄比例
  -(IBAction)changeCameraScale:(id)sender{
  if (isOneToOne) {
  [shadowView changeRect:CGRectMake(0, 0, 320, 428)];
  [cameraScaleBtn setImage:[UIImage imageNamed:@"font_-scale43.png"]forState:UIControlStateNormal];
  titleImageView.alpha = 0.2;
  flashModeBtn.alpha = 0.5;
  deviceModeBtn.alpha = 0.5;
  isOneToOne = NO;
  }else {
  [shadowView changeRect:CGRectMake(0, 80, 320, 320)];
  [cameraScaleBtn setImage:[UIImage imageNamed:@"font_-scale11.png"]forState:UIControlStateNormal];
  titleImageView.alpha = 1;
  flashModeBtn.alpha = 1;
  deviceModeBtn.alpha = 1;
  isOneToOne = YES;
  }
  }

  - (IBAction)enterPhotoAlbum:(id)sender {
  PhotoAlbumViewController* photoAlbumViewController = [[PhotoAlbumViewControlleralloc]initWithNibName:@"PhotoAlbumViewController" bundle:nil];
  [self presentModalViewController:photoAlbumViewController animated:YES];
  
  }

  //拍摄照片
  -(IBAction)takeThePic:(id)sender{
  [pickerController takePicture];
  }

  -(IBAction)backToHome:(id)sender{
  [pickerController dismissModalViewControllerAnimated:NO];
  [[NSNotificationCenter defaultCenter] postNotificationName:@"backToHome" object:nil];
  }

  - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
  {
  return (interfaceOrientation == UIInterfaceOrientationPortrait);
  }

  - (void)dealloc
  {
  [cameraScaleBtn release];
  [flashModeBtn release];
  [deviceModeBtn release];
  [titleImageView release];
  [super dealloc];
  }

  -(void)getAllPhotoImages{
  ALAssetsLibraryAccessFailureBlock failureblock = ^(NSError *myerror){
  
  NSLog(@"error occour =%@", [myerror localizedDescription]);
  };
  ALAssetsGroupEnumerationResultsBlock groupEnumerAtion = ^(ALAsset *result, NSUInteger index,BOOL *stop){
  if (result!=NULL) {
  if ([[result valueForProperty:ALAssetPropertyType] isEqualToString:ALAssetTypePhoto]) {
  [imageArray addObject:result];
  UIImage *img=[UIImage imageWithCGImage:result.thumbnail];
  [photoBtn setImage:img forState:UIControlStateNormal];
  }
  }
  };
  ALAssetsLibraryGroupsEnumerationResultsBlock
  
  libraryGroupsEnumeration = ^(ALAssetsGroup* group, BOOL* stop){
  
  if (group == nil) {
  return;
  }
  if (group!=nil) {
  [group enumerateAssetsUsingBlock:groupEnumerAtion];
  }
  };
  ALAssetsLibrary* library = [[ALAssetsLibrary alloc] init];
  
  [library enumerateGroupsWithTypes:ALAssetsGroupSavedPhotos
  
  usingBlock:libraryGroupsEnumeration
  
  failureBlock:failureblock];
  [library release];
  }
  @end
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
微测检测5.10
2023-05-10 广告
您好!建议咨 深圳市微测检测有限公司,已建立起十余个专业实验室,企业通过微测检测就可以获得一站式的测试与认 证解决方案;(EMC、RF、MFi、BQB、QI、USB、安全、锂电池、快充、汽车电子EMC、汽车手机互 联、语音通话质量),认证遇... 点击进入详情页
本回答由微测检测5.10提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式