use*_*002 5 iphone objective-c ios swift
我读取手机的原始高度来调整显示输出的大小,并确定顶部和底部的遮挡区域。这是一个基于选项卡的应用程序。我的显示纯粹是编程性的,它仅根据屏幕尺寸以图形方式布局。iPhone 12 mini 的显示屏比应有的小。其他 iPhone 12 类型显示正常。
在 xcode 模拟器中的各种 iPhone 类型上测试我的新应用程序时,它们看起来是正确的。但当我将该应用程序安装到 iPhone 12 mini 上时,显示屏比应有的小。我了解到模拟器返回本机高度值 2436,但手机返回值 2340。 此代码检查显示并告诉我按手机类型在屏幕顶部和底部保留多少:
nativeHeight=UIScreen.main.nativeBounds.height
if nativeHeight==1136 || nativeHeight==1334 // SE,6S,7,8
{reserveTopPixels=40; reserveBottomPixels=98}
else if nativeHeight==1792 // 11, XR
{reserveTopPixels=88; reserveBottomPixels=198}
else if nativeHeight==2208 // 6s+ 7+ 8+
{reserveTopPixels=54; reserveBottomPixels=146}
else if nativeHeight==2436 || nativeHeight==2688 // X, XS, 11Pro, 11, Xr
{reserveTopPixels=132; reserveBottomPixels=260}
else if nativeHeight==2340 //iPhone 12 mini "downsampled screen"
{reserveTopPixels=132; reserveBottomPixels=260; nativeHeight = 2436}
else if nativeHeight==2532 // 12, 12 pro
{reserveTopPixels=132; reserveBottomPixels=260}
else if nativeHeight==2778 // 12 pro max
{reserveTopPixels=132; reserveBottomPixels=260}
else {reserveTopPixels=40; reserveBottomPixels=98}
Run Code Online (Sandbox Code Playgroud)
我的更正是将从电话接收的值 2340 更改为更大的值 2436。
该应用程序现在可以在模拟器和手机上正确显示。我的问题是,这是一个合理的解决方案,还是我应该尝试其他方法。
nativeBounds:CGRect。:提供物理屏幕的边界矩形,以像素为单位。iPhone 12 mini的物理屏幕为1080\xc3\x972340像素
\niPhone 12 mini 的物理屏幕分辨率为 1080 x 2340 像素(476 ppi)。这低于操作系统报告的本机分辨率(在 UIScreen 上使用 nativeBounds)。我认为这是为了保持与 5.8 英寸型号(iPhone X/XS/11 Pro)分辨率的兼容性。
\n参考 :
\n这取决于您在何处使用此 nativeHeight 进行布局。
\n| 归档时间: |
|
| 查看次数: |
2222 次 |
| 最近记录: |