2010-02-20 9 views

Respuesta

16

me hizo una pregunta similar here

Mi solución fue crear una vista personalizada en la parte superior de la UIImagePickerControllerView defecto.

he descargado el ejemplo Augmented Reality

continuación, puede utilizar la OverlayView.m y OverlayView.h añadiéndolos a su proyecto: hice el selector de encargo barra de herramientas, recogedor y OverlayView mundial para que pueda acceder a ellos en cualquier parte del proyecto.

En su ViewController.h

@class OverlayView; 

@interface ViewController //bla bla... 
{ 
UIImagePickerController * picker; 
UIToolbar *toolBar; 
OverlayView *overlayView; 
} 

que crearon los controles de la barra de herramientas un botón de la cámara y el botón

// toolbar - handy if you want to be able to exit from the image picker... 
      toolBar=[[[UIToolbar alloc] initWithFrame:CGRectMake(0, 480-55, 320, 55)] autorelease]; 
      toolBar.barStyle = UIBarStyleBlackOpaque; 
      NSArray *items=[NSArray arrayWithObjects: 
          [[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel target:self action:@selector(cancelPicture)] autorelease], 
          [[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil] autorelease], 
          [[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCamera target:self action:@selector(shootPicture)] autorelease], 
          [[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil] autorelease], 
          [[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil] autorelease], 
          nil]; 
      [toolBar setItems:items]; 

      // create the overlay view 
      overlayView=[[[OverlayView alloc] initWithFrame:CGRectMake(0, 0, 320, 480-44)] autorelease]; 
      // important - it needs to be transparent so the camera preview shows through! 
      overlayView.opaque=NO; 
      overlayView.backgroundColor=[UIColor clearColor]; 

        // parent view for our overlay 
     UIView *parentView=[[[UIView alloc] initWithFrame:CGRectMake(0,0,320, 480)] autorelease]; 
     [parentView addSubview:overlayView]; 
     [parentView addSubview:toolBar]; 

     // configure the image picker with our overlay view 
     picker=[[UIImagePickerController alloc] init]; 
     picker.sourceType = UIImagePickerControllerSourceTypeCamera; 

     // hide the camera controls 
     picker.showsCameraControls=NO; 
     picker.wantsFullScreenLayout = YES; 

El método de cancelar

- (IBAction)cancel { 
    // Don't pass current value to the edited object, just pop. 
    [self.navigationController popViewControllerAnimated:YES]; 
} 

El (shootPictureMethod cancelar):

-(void) shootPicture { 

    [picker takePicture]; 

} 

Para salir sin mostrar vista previa simplemente descartar la vista después de tomar la fotografía en el método didFinishPickingImage

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)img editingInfo:(NSDictionary *)editInfo 
{ 
//do whatever 

[self dismissModalViewControllerAnimated:YES]; 
} 
+0

En este ejemplo, no es el botón que se ajusta de imagen pequeña? – Chris

+0

.. ¡¡rock !! \ m/ – Zaraki

+0

@erastusnjuki Estoy enfrentando un problema en el caso del iPad. El problema es que al reposicionar la barra de herramientas de Vertical a Horizontal y viceversa, el efecto de reposicionamiento de la barra de herramientas es claramente visible (es decir, la barra de herramientas se mueve de una posición a otra en un marco de tiempo pequeño). ¿Cómo arreglar este problema? –

Cuestiones relacionadas