大家好,我面临一个问题。在我的应用程序中,我想裁剪从相机拍摄的图像区域。因此,我使用的是 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
提前谢谢了。夏尔黑