J'ai trouvé un moyen pour vous d'atteindre le résultat souhaité que ce soit un peu ... pas si standard. :)
L'idée est de réorganiser un peu l'ordre des vues internes dans la structure utilisations. OK, nous créons donc un objet UIImagePickerController
, l'initialisons et lui ajoutons une vue de superposition. Puis-je avoir votre attention s'il vous plaît! L'objet UIView
(UIImageView
dans l'exemple de code) est masqué dès le début. Ne manquez pas ça. Enfin, nous présentons le contrôleur de sélecteur d'image en tant que contrôleur de vue modale. Ce code devrait être quelque part dans votre applicationDidFinishLaunching:
, viewWillAppear:
ou similaire sur le point de lancer des méthodes similaires.
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];
Avant la vue superposition (anImageView
) est publié un NSTimer
est créé, initialisé avec anImageView
(NSTimer
userInfo
propriété) et prévue tout de suite. Voici la méthode qu'il appelle:
- (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];
}
}
Toute NSTimer
chose est ajoutée au flux afin d'assurer que les travaux de remise en ordre autour se produira exactement quand le UIImagePickerController
sera totalement prêt pour cela.
C'est ça. Ca marche, ce n'est pas standard, c'est dur et rapide. Encore une fois, n'hésitez pas à optimiser et à le rendre «plus clair» (oh s'il vous plaît faites, mon but était de vous montrer le chemin).
Salut mac_55! Je voulais juste vous rappeler doucement d'accepter/commenter ma réponse mise à jour. –