iOS 4.3上的cameraOverlayView问题

Geo*_*rey 7 iphone uiimageview uiimagepickercontroller ios4

我正在使用带有cameraOverlayView的拾取器控制器在摄像机视图中显示产品的图像.在应用叠加层之前,会调整产品图像的大小.它在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;
Run Code Online (Sandbox Code Playgroud)

我更改了我用作叠加层的UIImageView的帧,但它仍然以320*480显示.我知道cameraOverlayView已经在iOS 4.3中进行了修改,但我不知道发生了什么变化以及我需要做些什么来纠正我的应用程序.

谢谢你的帮助.

Fab*_*ser 2

在 iOS 4.3 中,覆盖视图被拉伸至全屏。由于您将内容模式设置为宽高比,因此图像会拉伸以适应新的视图尺寸(320x480)。

您需要创建一个全屏的透明 UIView,将 imageview 添加到该视图并使 UIView 成为新的覆盖视图。

UIView *fullscreenView = [[UIView alloc] initWithFrame:CGRectZero];
fullscreenView.backgroundColor = [UIColor clearColor];
....
 [fullscreenView addSubview:imgView];
pickerController.cameraOverlayView = fullscreenView;
Run Code Online (Sandbox Code Playgroud)