2011-04-29 111 views
4

嗨......在這裏需要一些幫助......真的無法找到在谷歌...如何知道UIImagePickerController的「iris」啓動動畫是否結束?

我有一個標籤的應用程序,在茨艾倫的一個標籤將顯示的UIImagePickerController來從相機拍攝照片。 ..我使用覆蓋視圖,但是當相機花費近3秒來「打開」「irs」(開始動畫)時,我的覆蓋視圖已經可見,在關閉的虹膜上!

我需要檢查如何測試虹膜是否仍然靠近,所以我可以隱藏覆蓋視圖。

我讀到子類的UIImagePickerController一些帖子,但蘋果說,我們不應該這樣做wifh的UIImagePickerController ....

任何一個有線索?我真的失去了這裏....

THX

回答

0

虹膜動畫火災的[UIImagePickerController viewDidAppear]方法。蘋果鼓勵子類的UIImagePickerController爲各種各樣的原因,但如果你需要添加你的虹膜動畫完成後覆蓋和不願意寫與AVFoundation你自己的圖像採集類,我會做這樣的事情:

如果您不已經有一個,加UITabBarViewController一個新的子類用的UIImagePickerController @property和代表對UIImagePickerControllerDelegateUINavigationControllerDelegate

@interface my_TabBarViewController : UITabBarController <UIImagePickerControllerDelegate, UINavigationControllerDelegate> 
@property (nonatomic, strong) UIImagePickerController *picker; 

在實現中,添加一個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委託方法,清理影像選擇器,併發送信息字典到你的攝像頭視圖控制器,但是你需要處理的圖像:

- (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]; 
} 

[self initCamera];這裏的調用將重新初始化UIImagePickerController你可能或不想在這裏做。我想可能只是#import "my_TabBarViewController.hyourCameraViewController,然後你可以通過調用搶在UIImagePickerController委託方法指針picker

my_TabBarViewController *tabBarVC = (my_TabBarViewController*)self.tabBarController; 

,並有yourCameraViewController駁回和消息tabBarVC要重新初始化的UIImagePickerController當你需要它再次。

相關問題