ios - 标尺应用程序如何在所有设备上保持准确?

标签 ios objective-c swift

我真的很困惑目前市场上的 iOS Ruler 应用程序如何与不同尺寸的设备兼容。底部显示了一个示例。

经过研究,我得出的结论是,实时获取当前屏幕的 PPI 是不可能的,因此无法以编程方式绘制标尺。

我的问题是这些标尺应用如何在无法获取设备 PPI 的情况下准确显示标尺?

我的第一个想法是每个设备的 PPI 和屏幕尺寸都硬编码到应用程序中。这似乎需要付出很多努力,并且会导致一百万个错误。他们真的必须这样做吗?它需要在每个不同的设备上进行测试,以确保其正常工作。我只能访问我的 iPhone 5S。他们可能对每个不同的设备有不同的标尺图像吗?这会占用手机的大量空间。

我在 SO 上看到过关于绘制标尺的类似问题,但是(如果我错了请纠正我)他们似乎没有针对不同屏幕尺寸和 PPI 保持准确性的解决方案。他们似乎都在说“这不可能”。如果不可能,它是如何完成的?

example

最佳答案

正如您所发现的,iOS 没有用于获取设备 PPI 的公共(public) API。

正如您推测的那样,这些应用程序可能有一个硬编码列表。硬件设备 ID 不到一百个(例如,参见 this list),并且只有少数几个不同的 PPI:

  • 非视网膜 iPhone、iPod touch 和 iPad mini:163 PPI
  • 视网膜 iPhone(6+ 除外)、iPod touch 和 iPad mini:326 PPI
  • iPhone 6+:401 PPI
  • 非视网膜 iPad:132 PPI
  • 视网膜 iPad:264 PPI

我猜这些应用程序的开发者不会通常会在每台设备上测试他们的应用程序。除非您检查过这些应用,否则您没有理由相信这些应用比上面列出的 PPI 更准确。

要检测 iOS 设备类型,check the answers to this question .

关于ios - 标尺应用程序如何在所有设备上保持准确?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28573639/

相关文章:

ios - iOS 中 UIImageFromCVMat() 的应用程序崩溃

ios - 如何在 animateWithDuration block 期间利用 UIView 的变化值?

ios - 在声明错误之前使用局部变量 ""

ios - 你如何确定一个 spritenode 是否不等于 nil?

ios - 在 Swift 中以编程方式创建 UITextView 时未获得输出

swift - 如何隐藏导航栏 Swift

ios - 发射器不随父节点旋转

iOS Storyboards/NIBs 底层剖析。它们是如何实现的?

iphone - 我如何从字典字典中获取数组中的值

ios - 播放视频时未调用 UITableView didEndDisplaying