私はxcodeでCocoaを使ってiPhoneアプリを書いています。内蔵カメラで写真を撮る方法を示すチュートリアルやサンプルコードが見つかりません。どうすればよいですか?良い情報はどこにありますか?
ありがとう!
次のコードをコピーしてプロジェクトに貼り付けるだけで、完全に実装された機能を利用できます。
ここで、takePhotoおよびchooseFromLibraryは、ボタンのタッチで呼び出される独自のメソッド名です。
これらの方法については、適切なボタンのアウトレットを参照してください。
-(IBAction)takePhoto :(id)sender
{
UIImagePickerController *imagePickerController = [[UIImagePickerController alloc] init];
if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera])
{
[imagePickerController setSourceType:UIImagePickerControllerSourceTypeCamera];
}
// image picker needs a delegate,
[imagePickerController setDelegate:self];
// Place image picker on the screen
[self presentModalViewController:imagePickerController animated:YES];
}
-(IBAction)chooseFromLibrary:(id)sender
{
UIImagePickerController *imagePickerController= [[UIImagePickerController alloc] init];
[imagePickerController setSourceType:UIImagePickerControllerSourceTypePhotoLibrary];
// image picker needs a delegate so we can respond to its messages
[imagePickerController setDelegate:self];
// Place image picker on the screen
[self presentModalViewController:imagePickerController animated:YES];
}
//delegate methode will be called after picking photo either from camera or library
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
[self dismissModalViewControllerAnimated:YES];
UIImage *image = [info objectForKey:UIImagePickerControllerOriginalImage];
[myImageView setImage:image]; // "myImageView" name of any UIImageView.
}
UIImagePickerController
を使用します。これに関する良いチュートリアルがここにあります。
http://www.zimbio.com/iPhone/articles/1109/Picking+Images+iPhone+SDK+UIImagePickerController
ソースタイプをUIImagePickerControllerSourceTypeCamera
またはUIImagePickerControllerSourceTypePhotoLibrary
に設定する必要があります。これらの2つのタイプでは、画面の表示が大きく異なることに注意してください。両方を注意深くテストする必要があります。特に、UIImagePickerController
をUINavigationController
内にネストしている場合、注意しないと、複数のナビゲーションバーやその他の奇妙な効果が発生する可能性があります。
参照 このスレッド
UIImagePickerController
クラスを使用すると、写真を撮ったり、フォトライブラリから写真を選択したりできます。ソースタイプをUIImagePickerControllerSourceTypeCamera
として指定します。
以前に尋ねられたこの質問も参照してください: iPhone SDKでカメラにアクセスする
@WQSによって投稿された回答は正常に機能しますが、iOS6で廃止されたいくつかのメソッドが含まれています。iOS6以降の更新された回答は次のとおりです。
-(void)takePhoto
{
UIImagePickerController *imagePickerController = [[UIImagePickerController alloc] init];
if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera])
{
[imagePickerController setSourceType:UIImagePickerControllerSourceTypeCamera];
}
// image picker needs a delegate,
[imagePickerController setDelegate:self];
// Place image picker on the screen
[self presentViewController:imagePickerController animated:YES completion:nil];
}
-(void)chooseFromLibrary
{
UIImagePickerController *imagePickerController= [[UIImagePickerController alloc]init];
[imagePickerController setSourceType:UIImagePickerControllerSourceTypePhotoLibrary];
// image picker needs a delegate so we can respond to its messages
[imagePickerController setDelegate:self];
// Place image picker on the screen
[self presentViewController:imagePickerController animated:YES completion:nil];
}
//delegate methode will be called after picking photo either from camera or library
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
[self dismissViewControllerAnimated:YES completion:nil];
UIImage *image = [info objectForKey:UIImagePickerControllerOriginalImage];
[myImageView setImage:image]; // "myImageView" name of any UImageView.
}
これをview controller.h
に追加することを忘れないでください:
@interface myVC<UINavigationControllerDelegate, UIImagePickerControllerDelegate>
これが私のアプリの写真を撮るために使用した私のコードです
- (IBAction)takephoto:(id)sender {
picker = [[UIImagePickerController alloc] init];
picker.delegate = self;
[picker setSourceType:UIImagePickerControllerSourceTypeCamera];
[self presentViewController:picker animated:YES completion:NULL];
}
-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
img = [info objectForKey:@"UIImagePickerControllerOriginalImage"];
[imageview setImage:img];
[self dismissViewControllerAnimated:YES completion:NULL];
}
簡単に写真を撮り直したい場合は、この機能を追加してください
-(void)imagePickerControllerDidCancel:(UIImagePickerController *)picker
{
[self dismissViewControllerAnimated:YES completion:NULL];
}