2013-04-07 99 views
6

我有一个简单的UIImagePickerController将使用相机拍摄照片自定义的UIImagePickerController,但也有几件事情,我想它做的事:如何创建全屏图像IOS

  • 有自定义相机UI
  • 以全屏幕而不是480×640(如果上4英寸的手机)

这里是我展示的UIImagePickerController代码:

- (IBAction)pick:(id)sender { 
    NSLog(@"abc"); 
    picker = [[UIImagePickerController alloc] init]; 
    if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) { 
     [picker setSourceType:UIImagePickerControllerSourceTypeCamera]; 
    } else { 
     [picker setSourceType:UIImagePickerControllerSourceTypePhotoLibrary]; 
    } 
    [picker setDelegate:self]; 
    [self presentViewController:picker animated:YES completion:nil]; 

} 

,这里是当图像被采取:

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info { 
    [self dismissViewControllerAnimated:YES completion:nil]; 
    UIImage *image = [info objectForKey:UIImagePickerControllerOriginalImage]; 
    [imageView setImage:image]; 
} 

我该怎么办呢?

感谢

回答

8

对于第一点我想你可以使用一个UIImagePickerController对象的cameraOverlayView属性在选择器默认界面添加自定义的UI:

- (IBAction)pick:(id)sender { 
    NSLog(@"abc"); 
    picker = [[UIImagePickerController alloc] init]; 
    if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) { 
     [picker setSourceType:UIImagePickerControllerSourceTypeCamera]; 
    } else { 
     [picker setSourceType:UIImagePickerControllerSourceTypePhotoLibrary]; 
    } 

    // Add here your custom UI here 
    [picker setCameraOverlayView:self.customCameraOverlayView]; 

    [picker setDelegate:self]; 
    [self presentViewController:picker animated:YES completion:nil]; 

} 

编辑

我测试了UIImagePickerController,它返回图像的完整尺寸(PixelXDimension和PixelYDimension):

UIImagePickerControllerMediaMetadata =  { 
     DPIHeight = 72; 
     DPIWidth = 72; 
     Orientation = 6; 
     "{Exif}" =   { 
      ApertureValue = "2.526068811667588"; 
      BrightnessValue = "-0.5779073354035674"; 
      ColorSpace = 1; 
      DateTimeDigitized = "2013:04:07 22:30:03"; 
      DateTimeOriginal = "2013:04:07 22:30:03"; 
      ExposureMode = 0; 
      ExposureProgram = 2; 
      ExposureTime = "0.05882352941176471"; 
      FNumber = "2.4"; 
      Flash = 24; 
      FocalLenIn35mmFilm = 35; 
      FocalLength = "4.28"; 
      ISOSpeedRatings =    (
       800 
      ); 
      MeteringMode = 3; 
      PixelXDimension = 3264; 
      PixelYDimension = 2448; 
      SceneType = 1; 
      SensingMethod = 2; 
      ShutterSpeedValue = "4.058893689053568"; 
      SubjectArea =    (
       1874, 
       1478, 
       610, 
       612 
      ); 
      WhiteBalance = 0; 
     }; 
     "{TIFF}" =   { 
      DateTime = "2013:04:07 22:30:03"; 
      Make = Apple; 
      Model = "iPhone 4S"; 
      Software = "6.1.3"; 
      XResolution = 72; 
      YResolution = 72; 
     }; 
    }; 

编辑

你也可以设置你的图像查看内容的方式来调整和适应容器视图:

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info { 
    [self dismissViewControllerAnimated:YES completion:nil]; 
    UIImage *image = [info objectForKey:UIImagePickerControllerOriginalImage]; 
    [imageView setContentMode:UIViewContentModeScaleAspectFill]; 
    [imageView setImage:image]; 
} 

,之后以适应imageView,因为你需要在您查看控制器考虑设备屏幕(4英寸或不)使用auto layoutauto sizing

+1

第二部分工作,但在第一部分覆盖仅在屏幕上。我想改变按钮(照片图标)的外观。我将如何做到这一点? – 2013-04-08 14:47:54

+1

您可以使用'showsCameraControls'隐藏默认控件,并且在您使用'cameraOverlayView'设置的自定义用户界面中,您可以添加一个按钮,其中包含调用imagePickerController的'takePicture'方法的操作。 – alexcristea 2013-04-09 06:03:26

+0

对象'imageView'从哪里来? – lelelo 2018-02-08 11:55:04