iPhone: Camera visualização Overlay

votos
43

Como faço para adicionar uma sobreposição ( UIImageView) para a visualização da câmera e lidar com toques sobre isso?

Minhas tentativas anteriores de fazer isso (por exemplo, uso UIImagePickerControllere adicionar a imagem como um subexibição) falharam.

Publicado 16/06/2009 em 14:04
fonte usuário
Em outras línguas...                            


4 respostas

votos
37

Este tutorial explica: http://www.musicalgeometry.com/?p=821

Basta adicionar um UIImage na vista de sobreposição em vez da área vermelha mostrada no tutorial.

Respondeu 12/01/2010 em 14:06
fonte usuário

votos
10

Para o seu arquivo de implementação:

- (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];
    }

Faça uma classe UIView e adicionar este código

    - (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;
    }
Respondeu 06/11/2012 em 13:07
fonte usuário

votos
3

Você pode ser capaz de adicionar o UIImageViewcomo um subview da janela principal diretamente em vez de a UIImagePicker, pode funcionar melhor. Apenas certifique-se de adicioná-los na ordem correta, ou chamada

[window bringSubviewToFront:imageView];

depois que a câmera é para cima.

Se você deseja manipular toques na UIImageViewvocê poderia apenas adicionar o UIImageViewcomo um subview de uma tela cheia normal, Viewcom um fundo transparente, e adicionar que para a janela em vez disso, com um normal de UIViewControllersubclasse que você pode usar para lidar com os eventos de toque.

Respondeu 16/06/2009 em 14:28
fonte usuário

votos
2

Veja a visão da câmera sobreposição (disponível em 3.1 e posterior)

@property(nonatomic, retain) UIView *cameraOverlayView
Respondeu 08/02/2011 em 18:45
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more