0

初めての iOS アプリケーションを作成しようとしていますが、撮影したばかりの写真を取得する際に問題が発生しています。

ここに私の方法があります:

- (void)viewDidLoad
{
    [super viewDidLoad];
    //add imagePicker
    _imgPicker = [[UIImagePickerController alloc] init];
    _imgPicker.sourceType = UIImagePickerControllerSourceTypeCamera;
    _imgPicker.cameraCaptureMode = UIImagePickerControllerCameraCaptureModePhoto;
    _imgPicker.cameraDevice = UIImagePickerControllerCameraDeviceFront;
    _imgPicker.showsCameraControls = NO;
    _imgPicker.navigationBarHidden = YES;
    _imgPicker.toolbarHidden = YES;
    _imgPicker.wantsFullScreenLayout = NO;

    //add overlay on imagePicker
    _imageSilhouette.image = [UIImage imageNamed:_pose.image];
    _imgPicker.cameraOverlayView = _imageSilhouette;
    [_vImagePreview addSubview:_imgPicker.view];
}

ボタンをクリックするとタイマーが作動し、10 秒後に写真を撮ります。

- (void)decreaseTimerCount
{
    _lblTimer.text = [NSString stringWithFormat:@"%d", --_timerCount];
    if(_timerCount==0)
    {
        [self takePicture];
    }
}
-(void) takePicture{
    [_timer invalidate];
    [_imgPicker takePicture];
}

Apple のドキュメントで見たように、デリゲートを追加しました。

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
    UIImage * img = [info objectForKey:UIImagePickerControllerOriginalImage];
    _imageSilhouette.image = img;
    _imgPicker.cameraOverlayView = _imageSilhouette;
    //[picker dismissModalViewControllerAnimated:YES];
}

しかし、imagePickerController をどこかで宣言する必要があるかどうかはよくわかりません..

私が撮ったばかりの写真が img に含まれているかどうかもわかりませんか?

助けてもらえますか?

4

1 に答える 1

2

ピッカーのデリゲートを設定していません

画像ピッカーを設定するコードでは、これを追加する必要があります。

_imgPicker.delegate = self;

また、.hピッカーを作成しているファイルのファイルで、<>のの間にコードを追加する必要があります

@interface SomeClass:NSObject <UIImagePickerControllerDelegate>

.h ファイルにプロトコルを追加する代わりに、.m ファイルに追加する (より良い) オプションがあります。そうすることで、クラスがイメージ ピッカーを使用していることを世界に知らせることを回避できます。

@interface SomeClass () <UIImagePickerControllerDelegate>
@end

@implementationこれを対応する行の直前に追加します。

于 2013-04-09T15:21:49.550 に答える