我为iPhone应用程序中的相机视图设计了一个虹膜快门动画。
不幸的是,即使我隐藏了相机控件并创建了一个自定义的cameraOverlayView,在视图出现时似乎也无法隐藏苹果的快门。
我已经通过将我的快门在普通快门上的动画,当视图出现时,使用UVIVIEPEPICKER控制器的VIEWS WALLD和VIEWDIDALVE方法。但是,我不能第一次通过快门藏在快门下面。当应用程序启动时,它显示一个摄像机视图,并且原来的快门是可见的。在摄像师的所有后续观点中,我的工作都在工作。有什么建议吗?
这是我的密码。这是来自我的应用程序代表:
- (void)applicationDidFinishLaunching:(UIApplication *)application {
cameraController = [[CameraController alloc] initWithMode:@"camera"];
[window addSubview:cameraController.view];
}
这是来自我的UIIVaPixError子类:
- (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)对于初始动画,只需在另一个不透明的黑色视图下显示初始图像选取器主视图。不确定用户指定的覆盖视图是否适用于此,但您可以在不进行子类化的情况下执行这些操作。
搜索未记录的子视图是另一件理论上不安全的事情,因为谁知道将来实现可能会发生什么变化。