web-dev-qa-db-ja.com

iPhone Xcodeカメラ統合チュートリアル

助けが必要です。カメラをアプリに統合する必要があります。以下について学びたいです。

  1. ビューにカメラボタンが必要なので、クリックするとカメラビューが開きます。
  2. 写真を撮る
  3. Phone Galleryにアクセスし、別のビューで写真を表示するようにコーディングする必要があります。

誰か私を正しい方向に向けてもらえますか?

13
Legolas

まあ、 UIImagePickerController は必要なツールです。それはそのチェックリストのほとんどのことを行います。

ボタンの場合、グラフィック付きのカスタムボタンを作成できます。または、ツールバーまたはナビゲーションバーを使用してボタンを保持する予定の場合は、 UIBarButtonSystemItemCamera を使用してバーボタンを作成できます。 =システムアイテム。これにより、フレームワークのイメージが得られます。

それをタップすると、UIImagePickerControllerインスタンスが作成され、モーダルで表示されます。

UIImagePickerController * imagePicker = [[UIImagePickerController alloc] init];
imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera;
imagePicker.delegate = self;
[self presentModalViewController:imagePicker animated:YES];
[picker release];

delegateプロパティがid < UIImagePickerControllerDelegate, UINavigationControllerDelegate> delegate;として定義されているため、両方のプロトコルを採用する必要がありますが、ほとんどの場合、実装するメソッドは2つだけです-imagePickerControllerDidCancel:およびimagePickerController:didFinishPickingMediaWithInfo:UIImagePickerControllerDelegateプロトコルには別のメソッドがありますが、それは非推奨です。この辺りでよく言及されていても、使用しないでください。あなたはキャンセルハンドラがこのように書かれることを期待するでしょう、

- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker {
    [self dismissModalViewControllerAnimated:YES];
}

他の方法は、ほとんどのことを行う場所です。

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
    UIImage * image = [info objectForKey:UIImagePickerControllerEditedImage];

    // You have the image. You can use this to present the image in the next view like you require in `#3`.

    [self dismissModalViewControllerAnimated:YES];
}

写真の撮影は、UIImagePickerControllerインスタンスによって自動的に行われます。ただし、それらのコントロールをオーバーライドしたい場合は、showsCameraControlsNOに設定してから、独自のcameraOverlayViewを実装することで可能になります。これを実行して写真を撮るためのボタンを割り当てた場合、takePictureメソッドを使用して実際に写真のアクションをトリガーできます。したがって、これは#2に対処する必要があります。

他のプロパティを使用して、イメージピッカーを調整することもできます。たとえば、mediaTypesプロパティを使用して、ユーザーに画像の撮影のみを制限できます。

52

ドキュメントの言い換えdismissModalViewControllerAnimated:はiOS6以降では非推奨です。使用する dismissViewControllerAnimated:completion:代わりに。

0
Robin Macharg