2009-06-16 6 views
43

Как добавить наложение (UIImageView) на предварительный просмотр камеры и ручка касается этого?iPhone: Предварительный просмотр камеры

Мои предыдущие попытки сделать это (например, использовать UIImagePickerController и добавить изображение в качестве подзаголовка) потерпели неудачу.

+85

Высокий Рисование! – rpetrich

+2

Вы в конечном итоге решили это? – CodeAndCats

+3

фотография говорит тысяча слов – Unheilig

ответ

37

Этот учебник объясняет: http://www.musicalgeometry.com/?p=821

Просто добавьте UIImage в виде наложения вместо красной области, показанной в учебнике.

+2

+1, теперь это, безусловно, лучший ответ. Если я не ошибаюсь, CameraOverlayView был добавлен в SDK 3.1. – Henning

+0

Здравствуйте, мне тоже нужна информация, но ссылка не работает. Есть ли другие учебники? Спасибо –

+0

@ dtt101: Ваша ссылка больше не существует! : Не найдено – Momi

3

Возможно, вы можете добавить UIImageView в качестве подзона основного окна непосредственно вместо UIImagePicker, это может сработать лучше. Просто не забудьте добавить их в нужном порядке или позвоните по телефону

[window bringSubviewToFront:imageView]; 

после камеры вверх.

Если вы хотите обрабатывать штрихи на UIImageView вы можете просто добавить UIImageView как подвид обычного полноэкранного View с прозрачным фоном, и добавьте что к окну вместо, с нормальным UIViewController подкласса, который вы можете использовать для обработки событий касания.

2

См вид камеры наложения (доступно в версии 3.1 и позже)

@property(nonatomic, retain) UIView *cameraOverlayView 
10

Для вашего файла реализации:

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

сделать класс UIView и добавить этот код

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