ho trovato un modo per voi per ottenere il risultato desiderato anche se è un po '... non così standard. :)
L'idea è di riorganizzare un po 'l'ordine delle viste interne negli usi della struttura UIImagePickerController
.
OK, quindi creiamo un oggetto UIImagePickerController
, inizializzalo e aggiungiamoci una vista di sovrapposizione. Posso avere la vostra attenzione per favore! L'oggetto UIView
(UIImageView
nel codice di esempio) è nascosto fin dall'inizio. Da non perdere. Infine presentiamo il controller di selezione delle immagini come controller di visualizzazione modale. Questo codice dovrebbe trovarsi da qualche parte nel tuo applicationDidFinishLaunching:
, viewWillAppear:
o simile appropriato per avviare i metodi.
UIImagePickerController *anImagePickerController = [UIImagePickerController new];
anImagePickerController.delegate = self;
anImagePickerController.sourceType = UIImagePickerControllerSourceTypeCamera;
UIImageView *anImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"Watermark.png"]];
anImageView.frame = CGRectMake(0, 1, anImageView.image.size.width, anImageView.image.size.height);
anImageView.hidden = YES;
anImagePickerController.cameraOverlayView = anImageView;
[viewController presentModalViewController:anImagePickerController animated:NO];
[anImagePickerController release];
[NSTimer scheduledTimerWithTimeInterval:0.1
target:self
selector:@selector(timerFireMethod:)
userInfo:anImageView
repeats:YES];
[anImageView release];
prima che la vista di sovrapposizione (anImageView
) viene rilasciato un NSTimer
viene creato, inizializzato con anImageView
(NSTimer
userInfo
proprietà) e in programma subito. Ecco il metodo si chiama:
- (void)timerFireMethod:(NSTimer*)theTimer {
UIView *cameraOverlayView = (UIView *)theTimer.userInfo;
UIView *previewView = cameraOverlayView.superview.superview;
if (previewView != nil) {
[cameraOverlayView removeFromSuperview];
[previewView insertSubview:cameraOverlayView atIndex:1];
cameraOverlayView.hidden = NO;
[theTimer invalidate];
}
}
Il tutto NSTimer
cosa viene aggiunto al flusso al fine di garantire che il lavoro di riordino intorno accadrà esattamente quando il UIImagePickerController
sarà del tutto pronto per questo.
Questo è tutto. Funziona, non è standard, è ruvido e veloce. Di nuovo sentiti libero di ottimizzarlo e renderlo 'più raro' (oh per favore, il mio obiettivo era quello di mostrarti la via).
fonte
2010-01-23 12:56:04
Ehi mac_55! Volevo semplicemente ricordarti gentilmente di accettare/commentare la mia risposta aggiornata. –