iOS 4.3上的cameraOverlayView问题

7

我正在使用带有相机遮罩视图的选择器控制器来在相机视图中显示产品图片。在叠加层上应用产品图片之前,会对其进行调整大小。 在iOS 4.2上运行良好,但在iOS 4.3上,产品图片显示为全尺寸。

pickerController.sourceType = UIImagePickerControllerSourceTypeCamera;
UIImageView *imgView =  [[[UIImageView alloc] initWithImage:[UIImage imageNamed:produitAffiche.img_realite]] autorelease];

// Resize
if(imgView.frame.size.height == 480)
{
    //Portrait
    imgView.frame = CGRectMake(80.0f, 120.0f, 160.0f, 240.0f);
}
else
{
    // Landscape
    imgView.frame = CGRectMake(40.0f, 160.0f, 240.0f, 160.0f);
}

imgView.contentMode = UIViewContentModeCenter;
imgView.clipsToBounds = NO;
imgView.contentMode = UIViewContentModeScaleAspectFit;  

pickerController.cameraOverlayView = (UIView *) imgView;

我改变了用作覆盖层的UIImageView的框架,但它仍然以320 * 480显示。 我知道在iOS 4.3中cameraOverlayView已经被修改,但我不知道发生了什么变化,以及我需要做什么来纠正我的应用程序。
谢谢您的帮助。

1
我遇到了同样的问题。在这里找到了答案。 - 5hrp
链接的答案并没有真正帮助,它只是建议将视图放大。如果我们仍然需要使用比完整窗口更小的视图,该怎么办? - wxs
5个回答

2
在iOS 4.3中,覆盖视图被拉伸到全屏。因为您将内容模式设置为纵横比适合,所以图像被拉伸以适应新的视图大小,即320x480。
您需要创建一个全屏的透明UIView,将imageView添加到该视图中,并使UIView成为新的覆盖视图。
UIView *fullscreenView = [[UIView alloc] initWithFrame:CGRectZero];
fullscreenView.backgroundColor = [UIColor clearColor];
....
 [fullscreenView addSubview:imgView];
pickerController.cameraOverlayView = fullscreenView;

0

在您的代码中将此行注释掉

imgView.clipsToBounds = NO;

它应该可以工作。 如果您真的想要裁剪,@slf 的答案应该会有帮助。


0

我的问题实际上是在iPad上,iOS5上全屏显示的UIImagePicker在iOS4.3上无法工作。我将图像选择器从屏幕外启动,然后将其动画化到视图中...你会看到快门图像打开,但相机视图本身只是透明的,没有相机输出。

我的解决方案是不要在iPad上的iOS4.3上对其进行动画处理。似乎将相机视图从屏幕外启动会使相机渲染部分落后(如我在iOS5中所述)。

这个答案并不完全正确,但我把它放在这里,为了那些遇到同样问题并且像我一样找到这个问题的人。


0
发现了这篇文章,似乎符合要求。长话短说,就是使用


- (UIImage *)
  resizedImageWithContentMode:(UIViewContentMode)contentMode
                       bounds:(CGSize)bounds
         interpolationQuality:(CGInterpolationQuality)quality;

0

尝试设置这些 UIImagePicker 的属性:

mImagePickerController.showsCameraControls = NO;

mImagePickerController.navigationBarHidden = YES;

mImagePickerController.toolbarHidden = YES;

mImagePickerController.wantsFullScreenLayout = YES;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接