C'è un modo per disabilitare l'anteprima dell'immagine dopo aver scattato una foto con UIImagePickerController? Voglio chiudere ImagePicker non appena l'utente ha premuto il pulsante di scatto.iPhone SDK - Come disabilitare l'anteprima delle immagini in UIImagePickerController?
16
A
risposta
16
ho fatto una domanda simile here
La mia soluzione era quella di creare una vista personalizzata in cima alla UIImagePickerControllerView default.
Ho scaricato l'esempio Augmented Reality
Quindi è possibile utilizzare l'OverlayView.m e OverlayView.h aggiungendoli al progetto: ho fatto il selettore personalizzato barra degli strumenti, selettore e OverlayView globale in modo che io possa accedere ovunque nel progetto.
Nella tua ViewController.h
@class OverlayView;
@interface ViewController //bla bla...
{
UIImagePickerController * picker;
UIToolbar *toolBar;
OverlayView *overlayView;
}
ho creato i controlli della barra degli strumenti un pulsante della fotocamera e il pulsante
// 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;
Il annullare metodo
- (IBAction)cancel {
// Don't pass current value to the edited object, just pop.
[self.navigationController popViewControllerAnimated:YES];
}
L'(shootPictureMethod annullare):
-(void) shootPicture {
[picker takePicture];
}
Per uscire senza mostrare anteprima solo respingere la vista dopo aver scattato la foto nel metodo didFinishPickingImage
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)img editingInfo:(NSDictionary *)editInfo
{
//do whatever
[self dismissModalViewControllerAnimated:YES];
}
In questo esempio, non è il pulsante che scatta foto piccola? – Chris
.. tu rock !! \ m/ – Zaraki
@erastusnjuki Sto affrontando un problema in caso di iPad. Il problema è che mentre si riposiziona ToolBar da Portrait-to-Landscape e viceversa, l'effetto di riposizionamento della barra degli strumenti è chiaramente visibile (ad esempio, la barra degli strumenti viene spostata da una posizione all'altra in un piccolo intervallo di tempo). Come risolvere questo problema? –