如何根据 iOS 设备定义 PTM_RATIO

Posted

技术标签:

【中文标题】如何根据 iOS 设备定义 PTM_RATIO【英文标题】:How to define PTM_RATIO according to iOS device 【发布时间】:2013-03-25 16:16:27 【问题描述】:

我正在使用 Cocos2D+Box2D 进行游戏开发。由于 Box2D 使用米而不是像素,我需要定义像素与米的比率。所以我在代码顶部定义了一个 PTM_RATIO:

define PTM_RATIO 32

但是 32 对于 iPhone

【问题讨论】:

有什么问题?将 PTM_RATIO 设为常量并根据设备进行更改(例如 [[UIDevice currentDevice] userInterfaceIdiom]) 但是,等一下,如果我把它设为常数,那么我以后将无法更改它。常量是常量,正如它们的名字所暗示的那样。除此之外,我需要将 PTM_RATIO 放在一个头文件中。 使其成为静态而不是 const 【参考方案1】:

顺便说一句,您可以将代码中出现的所有 PTM_RATIO 替换为

[Box2DHelper pixelsToMeterRatio]

这样您就可以毫无问题地在 Retina 分辨率和正常分辨率之间切换。

查看文件 http://subversion.assembla.com/svn/oiram/trunk/GoLeft/GoLeft/Box2DHelper.mm

要了解 CC_CONTENT_SCALE_FACTOR,请查看When to use CC_CONTENT_SCALE_FACTOR()?

更新:例如为 iPad 提供不同的 PTM

#define isIPad UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad 
#define PTM_RATIO (isIPad ? 64 : 32) 

【讨论】:

正如您在提供的链接中看到的那样,PTM_RATIO 设置为 32。但是对于 iPAD,32 不合适。 这是 kPointsToMeterRatio 不是像素到米 这仅适用于视网膜和非视网膜显示配置。但 iPad 和 iPhone 的屏幕尺寸不同。所以固定 32 无济于事。 #define isIPad UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad #define PTM_RATIO (isIPad ? 64 : 32) 是的,没错。我只是在寻找设备确定器指令。

以上是关于如何根据 iOS 设备定义 PTM_RATIO的主要内容,如果未能解决你的问题,请参考以下文章

如何根据设备大小在 Marco.h 中定义字体大小?

iOS 6 - 如何在方向改变时运行自定义代码

如何在 iOS 设备的外部屏幕上显示自定义内容

React Native Expo 自定义字体权重在 iOS 设备上不起作用

如何使用 Xamarin 在 xaml 中创建自定义字体大小,以便您可以根据设备更改字体大小?

设备上的 iOS 8 自定义键盘