Animation 如何知道;虹膜“;UIImagePickerController的启动动画是否结束?

Animation 如何知道;虹膜“;UIImagePickerController的启动动画是否结束?,animation,uiimagepickercontroller,Animation,Uiimagepickercontroller,我有一个选项卡式应用程序,在其中一个选项卡中将显示一个UIImagePickerController,以从相机获取图片。我使用叠加视图,但是当相机用了将近3秒的时间“打开”irs(开始动画)时,我的叠加视图已经在关闭的虹膜上可见 我需要检查如何测试虹膜是否仍然靠近,以便隐藏覆盖视图 我读了一些关于UIImagePickerController子类化的帖子,但苹果说我们不应该用UIImagePickerController来做这件事 任何人都有线索吗?虹膜动画在[UIImagePickerCont

我有一个选项卡式应用程序,在其中一个选项卡中将显示一个UIImagePickerController,以从相机获取图片。我使用叠加视图,但是当相机用了将近3秒的时间“打开”irs(开始动画)时,我的叠加视图已经在关闭的虹膜上可见

我需要检查如何测试虹膜是否仍然靠近,以便隐藏覆盖视图

我读了一些关于UIImagePickerController子类化的帖子,但苹果说我们不应该用UIImagePickerController来做这件事


任何人都有线索吗?

虹膜动画在
[UIImagePickerController ViewDidDisplay]
方法上触发。Apple出于各种原因不鼓励将UIImagePickerController子类化,但如果您需要在iris动画完成后添加覆盖,并且不愿意使用AVFoundation编写自己的图像捕获类,我会这样做:

如果您还没有,请使用UIImagePickerController
@property
UIImagePickerController
UIAvigationControllerDelegate
添加一个新的
UIAbbarViewController
子类和委托

@interface my_TabBarViewController : UITabBarController <UIImagePickerControllerDelegate, UINavigationControllerDelegate>
@property (nonatomic, strong) UIImagePickerController *picker;
然后,当点击“摄影机视图”选项卡栏项目时,在选项卡栏控制器上使用如下方法显示摄影机:

- (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
delegate方法中,清理图像选择器,并将信息字典发送到相机视图控制器以处理图像,但您需要:

- (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
,您可能不想在此处执行此操作。我可能只需在您的
yourCameraViewController
中导入“my_TabBarViewController.h,然后您可以通过调用以下命令在
UIImagePickerController
委托方法中获取指向
picker
的指针:

my_TabBarViewController *tabBarVC = (my_TabBarViewController*)self.tabBarController;
当您再次需要时,让
UIImagePickerController
关闭并发送消息
tabBarVC
重新初始化
UIImagePickerController

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