根据设备方向正确缩放 UIImagePickerController 预览图像

Correct scaling a UIImagePickerController preview image depending on device orientation

我有一个UIImagePickerController可以拍照。我知道,例如UIImagePickerController doesn't fill screen iPhone 摄像头的纵横比与设备屏幕不同,因此需要裁剪摄像头图像以获得没有黑边的照片。

我的问题如下:

当我在纵向模式下拍照时,预览图像被垂直裁剪,因此图像会填满整个预览space:

但是,当我在横向模式下拍摄照片时,预览图像没有被裁剪,所以预览图像的顶部出现了一个黑条:

我了解到可以使用 UIImagePickerControllercameraViewTransform 属性 缩放预览图像。但是我必须在拍照前属性 设置这个,当时我不知道用户会以哪个方向拍照。
因此,如果我在拍摄照片之前应用缩放变换,照片将在纵向模式下被不必要地裁剪,而在横向模式下则被裁剪。如果我不应用转移,则照片是在纵向模式下拍摄的,但在横向模式下有一个黑色的顶栏。

那么在两个方向上正确裁剪照片(最少裁剪,但没有黑条)的正确方法是什么?

有时阅读 docs... 他们说:

重要
UIImagePickerController class 仅支持纵向模式。

所以 不能在横向模式下使用 UIImagePickerController