que he descubierto una manera para que usted pueda lograr el resultado deseado a pesar de que es un poco ... no tan estándar. :)
La idea es reorganizar un poco el orden de las vistas interiores en los usos de la estructura UIImagePickerController
.
Bien, entonces creamos un objeto UIImagePickerController
, lo inicializa y le agrega una vista de superposición. ¡Podría tener tu atención, por favor! El objeto UIView
(UIImageView
en el código de ejemplo) está oculto desde el principio. No te pierdas eso. Finalmente presentamos el controlador de selector de imagen como controlador de vista modal. Este código debe estar en algún lugar de su applicationDidFinishLaunching:
, viewWillAppear:
o métodos similares apropiados para el lanzamiento.
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];
Antes de la vista de superposición (anImageView
) se dio a conocer un NSTimer
se crea, inicializado con anImageView
(NSTimer
userInfo
propiedad) y programado de inmediato. Aquí está el método que llama:
- (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];
}
}
Se añade el conjunto NSTimer
cosa para el flujo para asegurar que el trabajo de reordenamiento en torno sucederá exactamente cuando el UIImagePickerController
será totalmente preparado para eso.
Esto es todo. Funciona, no es estándar, es rudo y rápido. De nuevo, siéntete libre de optimizar y hacerlo más 'adecuado' (por favor, mi objetivo era mostrarte el camino).
¡Hola, mac_55! Solo quería recordarle amablemente que acepte/comente mi respuesta actualizada. –