9

タイトルにあるように、で写真を撮るときは、非常にシンプルなカメラオーバーレイを作成する必要がありますUIImagePickerController。カメラに非常に単純なファイル(空のボックスなど)を追加したいのです.pngが、その方法がわかりません。

このWebページのほとんどのチュートリアルを確認しましたが、ほとんどのチュートリアルを理解していません。私には非常に難しいように思わ.pngれ、カメラオーバーレイに1つの単純なファイルを追加するのはそれよりも簡単なはずです。

(IBAction) getPhoto:(id) sender {
    UIImagePickerController * picker = [[UIImagePickerController alloc] init];
    picker.delegate = self;

    if((UIButton *) sender == choosePhotoBtn) {
        picker.sourceType = UIImagePickerControllerSourceTypeCamera;
    } else {

    }

    label1.text =@"PHOTO ACTION";

    [self presentModalViewController:picker animated:YES];
}

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
    [picker dismissModalViewControllerAnimated:YES];
    imageView.image = [info objectForKey:@"UIImagePickerControllerOriginalImage"];
}

オーバーレイコードはどこに実装すればよいですか?どのクラスを使用する必要があり、どのように行うことができますか?

4

1 に答える 1

15

UIImagePickerControllerと呼ばれるプロパティがありますcameraOverlayView。これはUIView*ですので、作成してその背景にPNGを配置し、それをのこのプロパティに割り当てる必要がありますpicker

わかりました、これがコードです(私はそれをテストしませんでした)

(IBAction) getPhoto:(id) sender 
{
    UIImagePickerController * picker = [[UIImagePickerController alloc] init];
    picker.delegate = self;

    // creating overlayView
    UIView* overlayView = [[UIView alloc] initWithFrame:picker.view.frame];
    // letting png transparency be
    overlayView.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"yourimagename.png"]];
    [overlayView.layer setOpaque:NO];
    overlayView.opaque = NO;

    picker.showsCameraControls = NO;
    picker.cameraOverlayView = overlayView;

    if((UIButton *) sender == choosePhotoBtn) 
    {
         if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera])
         {
             [picker setSourceType:UIImagePickerControllerSourceTypeCamera];
         } else {
             //do something if the device has no camera or if the camera is disabled in settings (it cannot be assumed that the camera is available/not broken)
         }
    } else {

    }

    label1.text =@"PHOTO ACTION";

    [self presentModalViewController:picker animated:YES];
}

もちろん、UIView*標準を作成する代わりにカスタムサブクラスを使用することもできますUIView* overlayViewが、それ以外はすべて同じです。

于 2012-09-24T20:27:12.103 に答える