1

大家好,我面临一个问题。在我的应用程序中,我想裁剪从相机拍摄的图像区域。因此,我使用的是 UIImagePickerController 和它的 cameraOverlayView。

问题是在 iPhone 4S、iPad、iPod 上 - “状态栏”不透明。在第二台 iPad 上,相机中的“状态栏”是透明的。我不知道如何访问 UIImagePickerController 的状态栏?

在我的代码中,我做了一些高度计算,在透明度的情况下,我错误地减去了额外的大小。而且我无法弄清楚“拍摄区域”内图像的大小。

这是一些代码:

+(CGFloat) statusBarYSize
{
    CGSize statusBarSize = [[UIApplication sharedApplication] statusBarFrame].size;
    return MIN(statusBarSize.width, statusBarSize.height);
}

+(CGRect)maxRectForPicker:(UIImagePickerController*)picker
{
    CGRect maxFrame = picker.cameraOverlayView.frame;
#warning @"Check that coefficient is equal to such value everywhere...)"
    if (!picker.toolbar.translucent) 
        maxFrame.size.height -=([self statusBarYSize]*2.5); // If transparent should not be subtracted!
    return maxFrame;
}

以下是图片链接:

iPhone 的图像。相机具有全屏尺寸 - 状态栏。

https://www.dropbox.com/s/7b405h5cavrf819/CorrectSubstraction.jpg

iPad的图像。摄像头占据了整个屏幕。

https://www.dropbox.com/s/7rekl8xen1z3s9b/ShouldNotSubstract.jpg

提前谢谢了。夏尔黑

4

1 回答 1

0

我通过以下方式找到解决方案:而不是试图找出属性。我计算来自相机的图像的纵横比和屏幕的纵横比。之后,我重新缩放图像以保持原生纵横比。它可以让我找到相机标准条的高度。

于 2013-08-27T09:07:37.020 回答