【问题标题】:iPhone: UIImagePickerController - standard zoom control doesn't workiPhone:UIImagePickerController - 标准缩放控制不起作用
【发布时间】:2011-03-13 10:51:27
【问题描述】:

我有一个 UIImagePickerController,它显示为模态视图控制器。这工作正常,除非我尝试向相机叠加视图添加任何内容。

只要我修改了相机覆盖视图,默认缩放控件就会停止工作(尽管点击对焦仍然有效)。如果我点击视图,会出现缩放滑块,但我无法像往常一样上下滑动它。

这是我正在使用的代码:

        imagePickerController = [[UIImagePickerController alloc] init];
        imagePickerController.sourceType = UIImagePickerControllerSourceTypeCamera;     
        imagePickerController.allowsEditing = NO;
        imagePickerController.delegate = self;
        imagePickerController.showsCameraControls = YES;
        imagePickerController.wantsFullScreenLayout = NO;
        [imagePickerController.cameraOverlayView addSubview:overlayView];

        [self presentModalViewController:imagePickerController animated:YES];

有没有人遇到过类似的问题或者可以看出我做错了什么?我知道它应该可以工作,正如我在其他也使用默认相机控件的应用程序上看到的那样。

谢谢:)

【问题讨论】:

  • 我的第一个猜测是您添加到视图中的内容覆盖了控件。但是在一般架构级别上,如果您正在自定义视图,我认为您应该将 showCameraControls 设置为 NO。同样对于定制录音,我认为苹果正在推动 AVFoundation。您可以从此处developer.apple.com/videos/wwdc/2010 在 AVEditDemo 中找到一个示例
  • 我已经检查并尝试了很多不同的方法,但视图似乎没有覆盖控件。在左上角制作一个绝对不覆盖控件的小视图仍然会导致缩放滑块被“锁定”并且我无法滑动它。

标签: iphone objective-c xcode uiimagepickercontroller


【解决方案1】:

经过一番折腾,我终于找到了解决方案。不要使用 cameraOverlayView 属性,而是向 UIImagePickerController 添加一个子视图,其框架大小为 CGRectZero。

在以下示例中,overlayView 是 UIView 的自定义子类,它绘制图像并将触摸传递给下一个响应者:

OverlayView *overlayView = [[OverlayView alloc] initWithFrame:CGRectZero];

    if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera])
    {
        imagePickerController = [[UIImagePickerController alloc] init];
        imagePickerController.sourceType = UIImagePickerControllerSourceTypeCamera;     
        imagePickerController.allowsEditing = NO;
        imagePickerController.delegate = self;
        imagePickerController.showsCameraControls = YES;
        [imagePickerController.view addSubview:overlayView];
        statViewController.imagePickerController = imagePickerController;
    }

-

然后,一切正常。不确定向 UIImagePickerController 添加子视图是否已记录在案并且 Apple 可以接受,但大量其他应用程序使用此方法(或类似的解决方法),因此不会导致任何提交问题。

【讨论】:

  • 你能解释一下最后一行“statViewController.imagePickerController = imagePickerController;”的意思吗?您是否将 imagePickerController 添加到其他东西,例如视图控制器?
  • 是 - 'statViewController' 是需要使用 imagePickerController 的 viewController。稍后,statViewController 将调用类似“[self presentModalViewController:imagePickerController]”的内容。不过,那条线并不是很重要——只要你像上面那样初始化你的 imagePicker 并按照规范呈现它,那么它应该可以工作(假设我没有忘记任何东西)。
猜你喜欢
  • 1970-01-01
  • 2013-08-18
  • 1970-01-01
  • 2015-05-26
  • 1970-01-01
  • 2014-10-25
  • 1970-01-01
  • 2023-03-13
  • 2012-11-14
相关资源
最近更新 更多