iPhone: sobreposição de visualização da câmera
-
05-07-2019 - |
Pergunta
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 UIImagePickerController
e adicione a imagem como uma subview) falhou.
Solução
Este tutorial explica: http://www.musicleometry.com/?p=821
Basta adicionar um UIImage na exibição de sobreposição em vez da área vermelha mostrada no tutorial.
Outras dicas
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 adicione 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;
}
Você pode adicionar o UIImageView
como uma subjecução da janela principal diretamente em vez do UIImagePicker
, pode funcionar melhor. Apenas certifique -se de adicioná -los na ordem certa ou ligue
[window bringSubviewToFront:imageView];
Depois que a câmera está acordada.
Se você quiser lidar com toques no UIImageView
você poderia simplesmente adicionar o UIImageView
Como uma subjecução de uma tela cheia normal View
com um fundo transparente e adicione este para a janela, em vez disso, com um normal UIViewController
Subclasse que você pode usar para lidar com os eventos de toque.
Veja a vista da sobreposição da câmera (disponível em 3.1 e posterior)
@property(nonatomic, retain) UIView *cameraOverlayView