虹膜動畫火災的[UIImagePickerController viewDidAppear]
方法。蘋果鼓勵子類的UIImagePickerController爲各種各樣的原因,但如果你需要添加你的虹膜動畫完成後覆蓋和不願意寫與AVFoundation你自己的圖像採集類,我會做這樣的事情:
如果您不已經有一個,加UITabBarViewController
一個新的子類用的UIImagePickerController @property
和代表對UIImagePickerControllerDelegate
和UINavigationControllerDelegate
@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.h
在yourCameraViewController
,然後你可以通過調用搶在UIImagePickerController
委託方法指針picker
:
my_TabBarViewController *tabBarVC = (my_TabBarViewController*)self.tabBarController;
,並有yourCameraViewController
駁回和消息tabBarVC
要重新初始化的UIImagePickerController
當你需要它再次。