2013-04-07 98 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