gpt4 book ai didi

ios - rect = [[UIScreen mainScreen] bounds]; 的正确返回值(IOS)

转载 作者:行者123 更新时间:2023-12-01 16:37:39 29 4
gpt4 key购买 nike

谁能告诉我什么功能

rect = [[UIScreen mainScreen] bounds];

应该为不同的iOS设备返回宽度和高度?我确信自从迁移到最新的 xcode 和 ios 8.1 以来我得到的值是错误的

对于 ipad air,我得到 1024 x 768,对于 iphone 5s,我得到 480x320,这两者显然都不是 mainScreen 的分辨率。我只有这两个设备和用于在以前的 sdk/xcode 上返回正确分辨率的函数。我的代码很大程度上依赖于这些正确的值,以便自动定位和缩放 UI、openGL 渲染缓冲区等,现在由于这个函数返回了错误的值,这被打破了。

最佳答案

正如 rmaddy 评论的那样,UIKit 总是以点为单位报告屏幕和 View 的尺寸——一个 UI 布局的单位,其尺寸在设备之间(大致)是恒定的——而不是像素。 (他也说得对,除非你添加了 4 英寸、4.7 英寸和 5.5 英寸屏幕的启动图像资源,否则你只会看到 3.5 英寸的 iPhone 尺寸。)

要获得具有显示器原始分辨率的 OpenGL ES 帧缓冲区,请将点大小乘以屏幕的 nativeScale 。因素。或获取 nativeBounds 直接地。但最好只使用 GLKView 自动为您完成所有帧缓冲区内容(并且正确完成)。

请注意 nativeScalenativeBounds是新的UIScreen iOS 8 中的属性——这是获得 iPhone 6 Plus 的非整数像素比例的唯一方法,而不是 UIKit 用于艺术的 3 倍比例。在以前的 iOS 版本上(您不必担心 iPhone 6 Plus),您仍然可以使用 scalebounds .

关于ios - rect = [[UIScreen mainScreen] bounds]; 的正确返回值(IOS),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26703890/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com