通过UIImagePicker中的cameraOverlay与相机控件进行交互

时间:2014-03-13 16:19:35

标签: ios ipad cocoa-touch ios7 uiimagepickercontroller

我正在尝试使用cameraOverlay为图像选择器模拟iOS的“方形模式”,因为此功能未实现。 (采用this question的风格。)这是在iPad应用程序中。

我的问题是,对于第一个屏幕,我可以完全正确地使用所有控件。但是对于图像拾取器的第二个屏幕,无法与按钮进行交互。

我的叠加层是picker.bounds的大小 - 我相信这会阻止与我的按钮的互动,就像我旋转屏幕景观一样,我只能用右手按钮进行交互......

所以,直接问题: 1)是否可以强制工具按钮响应通过cameraOverlay层触摸? 2)或者相反,是否可以将工具栏置于相机上。 (为什么你会想要它下面我不知道,特别是看到你可以隐藏它。我相信这是iOS中的一个错误)

图片:

enter image description here

屏幕一,按钮工作正常

enter image description here

屏幕二,按钮不响应。 (通过叠加)

我的代码:

if (type == UIImagePickerControllerSourceTypeCamera) {
        //Create camera overlay
        CGRect f = picker.view.bounds;

        CGFloat barHeight = (f.size.height - f.size.width) / 2;
        UIGraphicsBeginImageContext(f.size);
        [[UIColor colorWithWhite:0 alpha:1] set];
        UIRectFillUsingBlendMode(CGRectMake(0, 0, f.size.width, barHeight), kCGBlendModeNormal);

        UIImage *overlayImage = UIGraphicsGetImageFromCurrentImageContext();
        UIGraphicsEndImageContext();

        UIImageView *overlayIV = [[UIImageView alloc] initWithFrame:f];
        overlayIV.image = overlayImage;

        [picker.toolbar setUserInteractionEnabled:YES];

        [picker.cameraOverlayView addSubview:overlayIV];
        [picker.cameraOverlayView bringSubviewToFront:picker.toolbar];

    }

    [self presentViewController:picker animated:YES completion:nil];​

1 个答案:

答案 0 :(得分:1)

你能不能说:

  picker.cameraOverlayView.userInteractionEnabled= NO;
  overlayIV.userInteractionEnabled= NO;
IIRC,UIImageView默认为userInteractionEnabled NO,因此最后一部分可能是不必要的。