ios - 通过 UIImagePicker 中的 cameraOverlay 与相机控件交互

标签 ios ipad cocoa-touch ios7 uiimagepickercontroller

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

我的问题是,对于第一个屏幕,我可以完美地使用所有控件。然而,对于图像选择器的第二个屏幕,无法与按钮进行交互。

我的叠加层是 picker.bounds 的大小 - 我相信这会阻止与我的按钮的交互,就好像我旋转我的屏幕横向一样,我只能与右手按钮交互。 ..

那么,直接的问题: 1) 是否可以通过 cameraOverlay 层强制工具按钮响应触摸? 2) 或者,是否可以将工具栏置于 cameraOverlay 之上。 (我不知道为什么你会想要它在下面,特别是看到你可以隐藏它。我相信这是 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];​

最佳答案

你就不能说:

  picker.cameraOverlayView.userInteractionEnabled= NO;
  overlayIV.userInteractionEnabled= NO;

IIRC,UIImageView 默认为 userInteractionEnabled NO,因此最后一部分可能是不必要的。

关于ios - 通过 UIImagePicker 中的 cameraOverlay 与相机控件交互,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22384718/

相关文章:

ios - TabBarController 之前的启动画面

swift - iPad Pro 中的横向

iphone - 如何向我的 iPhone 应用程序添加额外的 "view"?

iphone - 无法加载名为

ios - performSegueWithIdentifier 不会推送 View

iphone - "Thread 6 com.apple.NSURLConnectionLoader: Program received signal: EXC_BAD_ACCESS"

ios - Watchkit 扩展中的 SwiftyJSON 不起作用

iphone - 确定 View 是否位于 UIPopOverController 内部

iphone - 在 Objective-c 中实现协议(protocol)方法

ios - tableview 单元格中的 UIButton 更改文本