如何根据 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的主要内容,如果未能解决你的问题,请参考以下文章
React Native Expo 自定义字体权重在 iOS 设备上不起作用