隐藏UIImagePickerControllerSourceTypceCamera工具栏,但具体按钮?

时间:2011-06-05 04:12:33

标签: objective-c cocoa-touch ios uiimagepickercontroller

为了在UIImagePickerControllerSourceTypeCamera中创建自定义工具栏,我必须关闭相机控件:

pickerOne.showsCameraControls = YES;

我想展示变焦,闪光灯,开关相机,并专注于UIImagePickerController,但我想创建自定义视图。添加自定义视图时,只有在我关闭cameraControls时才会显示。

有没有办法不隐藏相机控件并进行自定义视图?或者我是否必须手动添加这些按钮?

2 个答案:

答案 0 :(得分:2)

我认为除了在自定义视图(叠加层)中实现本机功能之外,没有其他办法(至少以直接的方式)。
其他方法(我没试过)是将自定义视图(不使用cameraOverlay属性)添加到UIImagePickerController根视图。这不是建议/允许的,但似乎它会起作用。自动闪光/缩放/前置摄像头...不使用自定义视图的原因是,视图层次结构不同。

如果你看看流行的相机应用程序,他们中的大多数都会实现这些控件。另外,我做了同样的事 事实上,实施它们并不困难。 “点击聚焦”实现起来很棘手,实际的焦点是默认完成的。我们所要做的就是在触摸时画出正方形。

答案 1 :(得分:0)

您可以通过检查hittest方法中的接收视图来忽略overlayview上的触摸。只需将此代码添加到您的叠加层视图中,就会忽略该视图上的所有触摸,但不会忽略其子视图中的那些。

-(id)hitTest:(CGPoint)point withEvent:(UIEvent *)event
{
    id hitView = [super hitTest:point withEvent:event];
    if (hitView == self) return nil;
    else return hitView;
}

如果今天在stackoverflow上读到这个,但我不记得在哪里,sry。