iPhone: Nakładka podglądu kamery

Jak dodać nakładkę (UIImageView) do podglądu kamery i dotknij tego?

Moje poprzednie próby zrobienia tego (np. użycie UIImagePickerController i dodanie obrazu jako podglądu podrzędnego) zakończyły się niepowodzeniem.

Author: Gabriel Tomitsuka, 2009-06-16

4 answers

Ten tutorial to wyjaśnia: http://www.musicalgeometry.com/?p=821

Po prostu dodaj interfejs w widoku nakładki zamiast czerwonego obszaru pokazanego w samouczku.

 37
Author: dtt101,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-03-17 19:41:33

Do pliku implementacji:

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

Stwórz klasę UIView i dodaj ten kod

    - (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;
    }
 10
Author: raj,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-11-06 12:29:48

Możesz dodać UIImageView jako podgląd głównego okna bezpośrednio zamiast UIImagePicker, może to działać lepiej. Po prostu upewnij się, że dodasz je w odpowiedniej kolejności lub zadzwoń

[window bringSubviewToFront:imageView];
Po uruchomieniu kamery.

Jeśli chcesz obsłużyć dotknięcia na UIImageView, możesz po prostu dodać UIImageView jako podgląd normalnego pełnoekranowego View z przezroczystym tłem, a zamiast tego dodać to do okna, za pomocą zwykłej UIViewController podklasy, której możesz użyć do obsługi dotyku wydarzenia.

 3
Author: Ed Marty,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-06-16 13:28:41

Zobacz widok nakładki kamery (dostępny w wersji 3.1 i nowszej)

@property(nonatomic, retain) UIView *cameraOverlayView
 2
Author: user363349,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-02-08 17:45:53