独自のカスタム[写真を撮る]ボタンを作成する際に問題が発生します。基本的に、デフォルトのコントロールを削除すると、カメラはシャッターアニメーションを実行したり、編集プロセスを実行したりせず、デリゲートメソッドに直接移動します。
だから、ここにいくつかのコードがあります。最初は、次のようなデフォルトのレイアウトを使用していました。
(ちなみに、ハードウェアの可用性を判断するためのifステートメントは削除しました。これらは無関係です。)
UIImagePickerController *picker = [[UIImagePickerController alloc] init];
picker.delegate = self;
picker.allowsEditing = YES;
picker.sourceType = UIImagePickerControllerSourceTypeCamera;
picker.showsCameraControls = YES;
picker.cameraCaptureMode = UIImagePickerControllerCameraCaptureModePhoto;
[self presentModalViewController:picker animated:YES];
このコードでは、デフォルトの「写真を撮る」ボタンを押すと、シャッターアニメーションが起動し、「移動して拡大縮小」ビューが表示されます。「選択」を押すと、デリゲートが呼び出され、を介して編集結果にアクセスできますinfo
。
これが、カスタムの「写真を撮る」ボタンだけを備えた新しい初期化コードです。ちなみに、ViewControllerのviewDidAppearメソッドでこのUIImagePickerControllerを初期化しています
UIImagePickerController *picker = [[UIImagePickerController alloc] init];
picker.delegate = self;
picker.allowsEditing = YES;
UIButton *shoot = [[UIButton alloc] initWithFrame:CGRectMake(110, 420, 100, 40)];
[shoot setTitle:@"Shoot" forState:UIControlStateNormal];
[shoot.titleLabel setTextColor:[UIColor whiteColor]];
[shoot addTarget:picker action:@selector(takePicture) forControlEvents:UIControlEventTouchUpInside];
picker.sourceType = UIImagePickerControllerSourceTypeCamera;
[picker.cameraOverlayView addSubview:shoot];
picker.showsCameraControls = NO;
picker.cameraCaptureMode = UIImagePickerControllerCameraCaptureModePhoto;
[self presentModalViewController:picker animated:YES];
この例では、カスタムボタンを押すと、アニメーションが起動されず、編集画面が表示されず、デリゲートがすぐに呼び出されます。
面白いことに、上記の例でshowsCameraControls
プロパティをYES
に変更した場合、カスタムボタンは、最初の例のデフォルトボタンとまったく同じように動作します。
これにはかなり困惑していますが、画像エディタを呼び出すために何かする必要がありdidFinishPickingMediaWithInfo
ますか、それとも初期化で何かが足りないだけですか?
Xcode4.3とiOS5.1を使用しています(アプリは5.0を対象としています)
どんな助けでも大歓迎です。乾杯!