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
相关产品推荐
相关产品推荐

