iphone - didfinishpickingmediawithinfo - uiimagepickercontroller swift 3
iPhone SDK-¿Cómo deshabilitar la vista previa de la imagen en UIImagePickerController? (1)
¿Hay alguna manera de deshabilitar la vista previa de la imagen después de tomar una foto con el UIImagePickerController? Quiero descartar el ImagePicker tan pronto como el usuario presione el botón disparador.
Hice una pregunta similar here
Mi solución fue crear una vista personalizada en la parte superior del UIImagePickerControllerView predeterminado.
Descargué el ejemplo de Realidad Aumentada.
Luego, puede usar OverlayView.m y OverlayView.h agregándolos a su proyecto: Hice la barra de herramientas, el selector y overlayView del selector personalizado para que pueda acceder a ellos desde cualquier parte del proyecto.
En su ViewController.h
@class OverlayView;
@interface ViewController //bla bla...
{
UIImagePickerController * picker;
UIToolbar *toolBar;
OverlayView *overlayView;
}
Creé los controles de la barra de herramientas, un botón de cámara y el botón de cancelar.
// 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 cancelación
- (IBAction)cancel {
// Don''t pass current value to the edited object, just pop.
[self.navigationController popViewControllerAnimated:YES];
}
El (shootPictureMethod):
-(void) shootPicture {
[picker takePicture];
}
Para salir sin mostrar la vista previa, simplemente cierre la vista después de tomar la foto con el método didFinishPickingImage
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)img editingInfo:(NSDictionary *)editInfo
{
//do whatever
[self dismissModalViewControllerAnimated:YES];
}