43 votes

iPhone : Superposition de l'aperçu de l'appareil photo

Comment ajouter une superposition (UIImageView) à la prévisualisation de la caméra et gérer les touches sur cette dernière ?

Mes tentatives précédentes pour y parvenir (par exemple, utiliser UIImagePickerController et ajouter l'image en tant que sous-vue) ont échoué.

alt text

37voto

dtt101 Points 1102

Ce tutoriel l'explique : http://www.musicalgeometry.com/?p=821

Il suffit d'ajouter une UIImage dans la vue superposée à la place de la zone rouge présentée dans le tutoriel.

10voto

raj Points 129

Pour votre fichier d'implémentation :

- (IBAction)TakePicture:(id)sender {

    // Create image picker controller
    UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init];

    // Set source to the camera
    imagePicker.sourceType =  UIImagePickerControllerSourceTypeCamera;

        // Delegate is self
        imagePicker.delegate = self;

        OverlayView *overlay = [[OverlayView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)];     

        // Insert the overlay:
        imagePicker.cameraOverlayView = overlay;

       // Allow editing of image ?
        imagePicker.allowsImageEditing = YES;
        [imagePicker setCameraDevice:
        UIImagePickerControllerCameraDeviceFront];
        [imagePicker setAllowsEditing:YES];
        imagePicker.showsCameraControls=YES;
        imagePicker.navigationBarHidden=YES;
        imagePicker.toolbarHidden=YES;
        imagePicker.wantsFullScreenLayout=YES;

        self.library = [[ALAssetsLibrary alloc] init];

        // Show image picker
        [self presentModalViewController:imagePicker animated:YES];
    }

Créez une classe UIView et ajoutez ce code

    - (id)initWithFrame:(CGRect)frame
    {
        self = [super initWithFrame:frame];
        if (self) {
            // Initialization code

            // Clear the background of the overlay:
            self.opaque = NO;
            self.backgroundColor = [UIColor clearColor];

            // Load the image to show in the overlay:
            UIImage *overlayGraphic = [UIImage imageNamed:@"overlaygraphic.png"];
            UIImageView *overlayGraphicView = [[UIImageView alloc] initWithImage:overlayGraphic];
            overlayGraphicView.frame = CGRectMake(30, 100, 260, 200);
            [self addSubview:overlayGraphicView];

        }
        return self;
    }

3voto

Ed Marty Points 24861

Vous pourrez peut-être ajouter le UIImageView en tant que sous-vue de la fenêtre principale directement au lieu de l'option UIImagePicker cela peut mieux fonctionner. Assurez-vous simplement de les ajouter dans le bon ordre, ou appelez

[window bringSubviewToFront:imageView];

après que la caméra soit en marche.

Si vous voulez gérer les touches sur le UIImageView vous pourriez simplement ajouter le UIImageView comme une sous-vue d'un plein écran normal View avec un fond transparent, et ajoutez que à la place de la fenêtre, avec une UIViewController que vous pouvez utiliser pour gérer les événements tactiles.

2voto

user363349 Points 762

Voir la vue superposée de la caméra (disponible dans 3.1 et plus)

@property(nonatomic, retain) UIView *cameraOverlayView

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X