- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我为 iPhone 应用程序中的相机 View 设计了一个虹膜快门动画。
不幸的是,即使我隐藏相机控件并创建自定义 cameraOverlayView,似乎也无法在 View 出现时隐藏 Apple 的快门。
当 View 出现时,我通过使用 UIImagePickerController 的 viewWillAppear 和 viewDidAppear 方法在普通快门之上设置我的快门动画来解决这个问题。但是,我无法在第一次通过时将百叶窗隐藏在我的百叶窗下。当应用程序启动时,它会显示相机 View ,并且可以看到原始快门。在 cameraController 的所有后续 View 中,我的解决方法都有效。有什么建议吗?
这是我的代码。这是来 self 的应用程序委托(delegate):
- (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) 遍历选取器主视图的 subview ,看看你是否可以识别用于为快门设置动画的任何内容,然后对其进行处理,以便它不会显示,或者 2) 对于初始动画,仅在另一个不透明的黑色 View 下显示初始图像选择器主视图。不确定用户指定的叠加 View 是否适用于此,但您可以在不进行子类化的情况下执行这些操作。
搜索未记录的 subview 是另一件理论上不安全的事情,因为谁知道 future 的实现可能会如何改变。
关于iphone - 在 UIImagePickerController 中隐藏快门,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2010602/
我正在使用 Shutter,我非常喜欢它。我将它安装在我的新笔记本电脑上,但无法正常工作。当我打开快门并尝试截取屏幕截图时,它显示错误消息“打开/home/username/Pictures 时出错”
我是一名优秀的程序员,十分优秀!