iPhone X 相机没有填满屏幕

iPhone X camera not filling screen

我在我的应用程序中实现了二维码扫描器,布局在所有设备上都很好,但 iPhone X 除外。在 iPhone X 上,导航栏之间有一个大白条和相机视图(任何其他设备上都没有白条)。我不确定是什么原因造成的。如何让相机视图占满屏幕?

以下是我实现相机视图应该有多大的方法:

video.frame = CGRect(x: 0, y: 0, width: UIScreen.main.bounds.width, height: UIScreen.main.bounds.height)
view.layer.addSublayer(video)

这里还有一张白条的截图(屏幕是黑色的是因为相机平放在table):

出现白条的主要原因是纵横比:

  • 相机:最有可能是 16 : 9(例如 1920 x 1080)
  • iPhone X:屏幕分辨率 812 x 375(逻辑)或 1125 x 2436(物理)转换为大约 16 : 7.4

因此,当您创建一个完全匹配屏幕尺寸的视图并将相机视图添加到其中时,顶部和底部会有一个未被相机视图覆盖的栏。

底部栏不可见,因为您的视图似乎从导航栏下方开始,即它延伸到屏幕底部下方。

其他 iPhone 不受此影响,因为它们的屏幕尺寸为 16 : 9,例如1334 x 750。如果您有 iPad 版本,它应该也会受到问题的影响,并在左右两侧显示条形。

修复它:

  • 将您的视图置于导航栏下方,使其覆盖顶部的大部分栏
  • 更改背景颜色以获得更合适的颜色
  • 扩展视图的宽度以实现 16 : 9 的纵横比并将视图居中