iPhone: Kamera Vorschau Overlay
-
05-07-2019 - |
Frage
Wie füge ich eine Überlagerung hinzu (UIImageView
) zur Kamera -Vorschau und Handlungsberührungen?
Meine vorherigen Versuche, dies zu tun (z. B. Verwendung UIImagePickerController
und fügen Sie das Bild als Unteransicht hinzu) fehlgeschlagen.
Lösung
Dieses Tutorial erklärt es: http://www.musicsicgeometry.com/?p=821
Fügen Sie einfach eine Benutzeroberfläche in die Overlay -Ansicht anstelle des im Tutorial gezeigten roten Bereichs hinzu.
Andere Tipps
Für Ihre Implementierungsdatei:
- (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];
}
Erstellen Sie eine UIView -Klasse und fügen Sie diesen Code hinzu
- (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;
}
Möglicherweise können Sie das hinzufügen UIImageView
als Unteransicht des Hauptfensters direkt anstelle der UIImagePicker
, Es kann besser funktionieren. Stellen Sie einfach sicher, dass Sie sie in der richtigen Reihenfolge hinzufügen oder anrufen
[window bringSubviewToFront:imageView];
Nachdem die Kamera abgelaufen ist.
Wenn Sie mit Berührungen auf dem handeln möchten UIImageView
Sie könnten das einfach hinzufügen UIImageView
als Unterblick eines normalen Vollbildbildes View
mit einem transparenten Hintergrund und hinzufügen das stattdessen zum Fenster mit einem normalen UIViewController
Unterklasse, mit der Sie die Touch -Ereignisse verarbeiten können.
See the camera overlay view (available in 3.1 and later)
@property(nonatomic, retain) UIView *cameraOverlayView