2013-04-07 6 views
6

Mam proste UIImagePickerController które będą korzystać z aparatu, aby zrobić zdjęcie, ale istnieje kilka rzeczy, które chciałbym to zrobić:Jak utworzyć niestandardowy UIImagePickerController ze zdjęciami pełnoekranowe iOS

  • Have zwyczaj kamera UI
  • Weź pełnym ekranie zamiast 480x640 (jeśli na 4inch telefon)

Oto mój kod pokazujący 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]; 

} 

i tutaj jest, gdy obraz zostanie podjęta:

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

jaki sposób mogę to zrobić?

Dzięki

Odpowiedz

8

Na pierwszym podpunkcie Przypuszczam, że można skorzystać z właściwości obiektu UIImagePickerControllercameraOverlayView dodać niestandardowy interfejs użytkownika poprzez interfejs domyślnego kompletacji:

- (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]; 

} 

EDIT

Przetestowałem model UIImagePickerController, który zwraca obraz z pełnymi wymiarami (PixelXDimension i 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; 
     }; 
    }; 

EDIT

Również można ustawić na obrazie zobaczyć tryb zawartości, aby zmienić rozmiar i dopasować widok w opakowaniu:

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

a potem dopasować imageView jak trzeba kontrolujesz widok, biorąc pod uwagę ekran urządzenia (4 cale lub mniej), używając auto layout lub auto sizing.

+1

Druga część działała, ale w pierwszej części nakładka jest tylko na ekranie. Chcę zmienić wygląd przycisków (ikona zdjęcia). Jak to zrobić? –

+1

Możesz ukryć domyślne formanty za pomocą 'showsCameraControls' oraz w niestandardowym interfejsie użytkownika, który ustawiasz za pomocą' cameraOverlayView', możesz dodać przycisk z akcją, która wywołuje metodę 'takePicture' w imagePickerController. – alexcristea

+0

Skąd wziął się obiekt 'imageView'? – lelelo