我正在使用一个带有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;我更改了用作覆盖的UIImageView的边框,但它仍然以320*480显示。我知道iOS 4.3中的cameraOverlayView已经被修改了,但是我不知道有什么改变,也不知道我必须做什么来纠正我的应用程序。
谢谢你的帮助。
发布于 2011-09-02 12:05:07
在iOS 4.3中,覆盖视图被拉伸到全屏。由于您将内容模式设置为纵横比适合,因此图像将被拉伸以适合新的视图大小320x480。
你需要制作一个全屏的透明UIView,将图像视图添加到该视图中,并将该UIView设置为新的覆盖视图。
UIView *fullscreenView = [[UIView alloc] initWithFrame:CGRectZero];
fullscreenView.backgroundColor = [UIColor clearColor];
....
[fullscreenView addSubview:imgView];
pickerController.cameraOverlayView = fullscreenView;发布于 2011-06-16 22:35:39
找到似乎符合要求的this article。它的长处和短处在于使用
- (UIImage *)
resizedImageWithContentMode:(UIViewContentMode)contentMode
bounds:(CGSize)bounds
interpolationQuality:(CGInterpolationQuality)quality;发布于 2011-07-07 14:19:24
在代码中注释掉这一行
imgView.clipsToBounds = NO;
应该能行得通。如果你真的想剪辑,@slf的答案应该会有所帮助。
https://stackoverflow.com/questions/5952492
复制相似问题