2011-04-29 11 views
4

やあみんな... THOSの一つにタブがカメラから画像を取得するためにUIImagePickerControllerを表示することを、本当にカントは、私はタブ付きのアプリを持っている...グーグルにUIImagePickerControllerの "iris"開始アニメーションが終了しているかどうかを知る方法は?

を見つける...ここにいくつかの助けを必要としています。 ..オーバーレイビューを使用しますが、カメラが「irs」(アニメーション開始)を「開く」に約3秒かかると、私のオーバーレイビューは閉じたアイリスの上に既に見えます!

虹彩がまだ近くにあるかどうかを確認する必要があるので、私はオーバーレイビューを隠すことができます。

私はUIImagePickerControllerをサブクラス化に関するいくつかの記事を読んで、Appleは我々がいずれかの手掛かりを持ってUIImagePickerController wifh ....

ことをやるべきではないと言いましたか?私は本当に[UIImagePickerController viewDidAppear]方法に....ここ

Thxを

答えて

0

アイリスアニメーション火災を失っています。 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を閉じてい再び。

関連する問題