You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

2011年旧Cocos2d项目适配Xcode12及新iOS设备 如何调整缩放偏移常量

Cocos2d旧项目全iOS设备适配修改方案

你原有的宏是硬编码匹配iPhone4s、初代iPad的固定3:2屏幕比例参数,完全不兼容现在不同长宽比的iOS设备,需要修改为基于当前窗口尺寸动态计算的自适应逻辑,修改后的宏定义如下:

#define SW ([[CCDirector sharedDirector] winSize].width)
#define SH ([[CCDirector sharedDirector] winSize].height)

// 此处填入你项目原始设计的基准分辨率(横屏项目填横屏宽高,竖屏则互换)
#define BASE_DESIGN_WIDTH 800.0f
#define BASE_DESIGN_HEIGHT 480.0f

// 等比缩放系数,取宽高缩放的最小值保证所有内容都能完整显示在屏幕内
#define SCALEX MIN(SW / BASE_DESIGN_WIDTH, SH / BASE_DESIGN_HEIGHT)
#define SCALEY SCALEX

// 居中偏移量计算,自动适配不同屏幕的左右/上下边距
#define OFFSETX (SW - BASE_DESIGN_WIDTH * SCALEX) / 2.0f
#define OFFSETY (SH - BASE_DESIGN_HEIGHT * SCALEX) / 2.0f

适配调整注意事项

  • 如果需要内容铺满屏幕无黑边,将MIN替换为MAX即可,该模式下会裁剪超出屏幕边缘的设计内容,UI不会变形。
  • 不需要额外处理Retina屏幕的像素密度,Cocos2d的winSize默认返回逻辑点分辨率,和物理像素无关。
  • 原有业务代码中使用这四个宏做坐标计算的逻辑不需要修改,直接替换宏定义即可生效。
  • 如仍有单个UI元素偏移,检查该元素坐标是否有硬编码数值,统一用OFFSETX + 原始x坐标 * SCALEX、OFFSETY + 原始y坐标 * SCALEY的格式计算坐标即可。

内容的提问来源于stack exchange,提问作者9to5ios

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 13:24:04