アイリスアニメーション火災を失っています。 Appleはさまざまな理由でUIImagePickerControllerのサブクラス化を嫌っていますが、虹彩アニメーションの終了後にオーバーレイを追加する必要があり、AVFoundationで独自のImage Captureクラスを作成するつもりがない場合は、次のようにします:
まだお持ちでない、実装でUIImagePickerController @property
及び代表者UIImagePickerControllerDelegate
ためとUINavigationControllerDelegate
@interface my_TabBarViewController : UITabBarController <UIImagePickerControllerDelegate, UINavigationControllerDelegate>
@property (nonatomic, strong) UIImagePickerController *picker;
でUITabBarViewController
の新しいサブクラスを追加し、initCamera
メソッドを追加し、viewDidLoad
でそれを呼び出します
- (void)initCamera
{
_picker = [[UIImagePickerController alloc] init];
_picker.sourceType = UIImagePickerControllerSourceTypeCamera;
_picker.view.frame = CGRectMake(0.f, 20.f, 320.f, 499.f);
_picker.navigationBarHidden = TRUE;
_picker.delegate = self;
_picker.cameraOverlayView = YourCameraOverlayView;
[self.view addSubview:_picker.view];
[_picker viewDidAppear:FALSE];
[self.view sendSubviewToBack:_picker.view];
}
その後、あなたのカメラビュータブバーの項目をタップすると、あなたのタブバーコントローラ上でこのような方法でカメラを表示:
最後に
- (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item
{
NSLog(@"tapped: %@", item.title);
if ([item.title isEqualToString:@"Camera"]) {
[self.view bringSubviewToFront:_picker.view];
} else {
[self.view sendSubviewToBack:_picker.view];
}
}
、タブバーコントローラ上のごUIImagePickerController
デリゲートメソッドで、イメージピッカーをクリーンアップし、画像を処理するために、あなたのカメラビューコントローラに情報辞書を送信しかし、あなたがする必要がある:ここ[self initCamera];
へ
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
[_picker.view removeFromSuperview];
yourCameraViewController *camVC = (yourCameraViewController*)[self.viewControllers objectAtIndex:1];
// Index 1 would just be the second tab, adjust accordingly
[camVC imagePickerController:picker didFinishPickingMediaWithInfo:info];
[self initCamera];
}
コールは再初期化するでしょうUIImagePickerController
あなたはここでやりたくないかもしれません。私はちょうど#import "my_TabBarViewController.h
あなたyourCameraViewController
でそうだろうと、あなたは呼び出すことで、あなたのUIImagePickerController
デリゲートメソッドでpicker
へのポインタをつかむことができます:
my_TabBarViewController *tabBarVC = (my_TabBarViewController*)self.tabBarController;
を、あなたがそれを必要とするときyourCameraViewController
はそれと再initにUIImagePickerController
メッセージtabBarVC
を閉じてい再び。