更改 UIImagePicker 纵横比

Posted

技术标签:

【中文标题】更改 UIImagePicker 纵横比【英文标题】:change UIImagePicker aspect ratio 【发布时间】:2014-03-23 15:29:27 【问题描述】:

所以我尝试在我的 ios 应用中制作自定义相机。

我想让相机像 snapchats 一样全屏显示。

但我找不到任何可以帮助我将纵横比从 4:3(默认)更改为 16:9(iPhone 5 和 5s,4" 屏幕)的地方。

谁能指出我正确的方向?

【问题讨论】:

AFAIK 你必须切断零件。我猜 Aspect Fill 是正确的选择 切掉部分没问题,只是我不知道如何计算要切掉的部分? @Andyy 你找到解决办法了吗? 【参考方案1】:

这里有点无耻的自我宣传,但我有一个相机项目可以做你想做的一切,而且你可以为你的项目进一步定制它。 GitHub

它会为您完成所有切割/尺寸/纵横比,同时仍然在所有设备上全屏显示。

否则,如果您不喜欢,github/cocoacontrols/其他地方还有很多其他选项。您也可以通过查看AVFoundation

来制作自己的

【讨论】:

【参考方案2】:

你需要改变UIImagePickerController的cameraViewTransform:

CGSize screenBounds = [UIScreen mainScreen].bounds.size;

CGFloat cameraAspectRatio = 4.0f/3.0f;

CGFloat camViewHeight = screenBounds.width * cameraAspectRatio;
CGFloat scale = screenBounds.height / camViewHeight;

pickerController.cameraViewTransform = CGAffineTransformMakeTranslation(0, (screenBounds.height - camViewHeight) / 2.0);
pickerController.cameraViewTransform = CGAffineTransformScale(pickerController.cameraViewTransform, scale, scale);

【讨论】:

iOS 10 似乎忽略了这个代码 sn-p,我让它在 iOS 9 上运行,但自从升级它坏了,选择器在相机视图中显示 4:3 比例

以上是关于更改 UIImagePicker 纵横比的主要内容,如果未能解决你的问题,请参考以下文章

以编程方式更改纵横比约束值

以编程方式快速更改纵横比约束

视频纵横比在 firefox 网络浏览器上自动更改

更改高度时保持图像纵横比

更改图像时 JCROP 重置纵横比

使用 ffmpeg sameq 和编解码器副本更改纵横比