iphone – 在UIImagePickerController中隐藏快门

我在iPhone应用程序中为摄像机视图设计了虹膜快门动画.

不幸的是,即使我隐藏相机控件并创建自定义cameraOverlayView,在视图出现时似乎也无法隐藏Apple的快门.

通过使用UIImagePickerController的viewWillAppear和viewDidAppear方法,当视图出现时,我通过在正常快门顶部设置快门动画来解决这个问题.但是,我第一次无法将快门隐藏在我的快门下.当应用程序启动时,它会显示摄像机视图,并且可以看到原始快门.在cameraController的所有后续视图中,我的解决方法都有效.有什么建议?

这是我的代码.这是来自我的app委托:

- (void)applicationDidFinishLaunching:(UIApplication *)application {   

  cameraController = [[CameraController alloc] initWithMode:@"camera"];
  [window addSubview:cameraController.view];

}

这是来自我的UIImagePickerController子类:

- (void) viewWillAppear:(BOOL)animated {

  if (self.sourceType != UIImagePickerControllerSourceTypePhotoLibrary || simulatorView) {
    [self addShutter];
    [shutter close];
  }   
  [super viewWillAppear:animated];

}


- (void) viewDidAppear:(BOOL)animated {

  if (self.sourceType != UIImagePickerControllerSourceTypePhotoLibrary || simulatorView) {
    [shutter openShutter:.5f];
  }
  [super viewDidAppear:animated];

}

最佳答案 请注意,文档说不支持子类化UIImagePickerController,因此它可能在某些情况下有效但不“安全”.不确定它是否会被应用商店拒绝. (可能取决于他们的静态代码验证工具有多挑剔.)

我真的没有一个好的答案,但你可以尝试1)迭代选择器主视图的子视图,看看你是否可以识别用于为快门设置动画的任何东西,然后将其修改以使其不会显示,或2)对于初始动画,只需在另一个不透明的黑色视图下显示初始图像选择器主视图.不确定用户指定的覆盖视图是否适用于此,但您可以在没有子类化的情况下执行这些操作.

搜索未记录的子视图是理论上不安全的另一件事,因为谁知道将来如何改变实现.

点赞