您的位置:首页 > 移动开发 > IOS开发

IOS 应用开发中, Universal 版坐标问题的一点研究

2013-06-09 14:15 260 查看
开发uniervsal应用时,当 iphone 做好,开始向ipad 上移植的时候. 就会遇到一个坐标转换的问题. 一般情况下,做法是

if(ipad){

...

}else{

...

}

非Universal 版或许是:

#ifdef IPAD

...

#else

...

#endif

当然这么写一点问题都没有, 只是有点麻烦.

所以这里总结了下坐标对应问题:

int g_iPadScale;

int g_iPadOffsetX;

int g_iPadOffsetY;

//全居中

#define ccu(x, y) ccp((g_iPadOffsetX+g_iPadScale*x), (g_iPadOffsetY+g_iPadScale*y))

#define ccu_center(x, y) ccu(x, y)

//左对齐

#define ccu_l(x,y) ccp((g_iPadScale*x), (g_iPadOffsetY + g_iPadScale*y))

//右对齐

#define ccu_r(x,y) ccp((2*g_iPadOffsetX+g_iPadScale*x), (g_iPadOffsetY+g_iPadScale*y))

//底对齐

#define ccu_b(x,y) ccp((g_iPadOffsetX+g_iPadScale*x), (g_iPadScale*y))

//顶对齐

#define ccu_t(x,y) ccp((g_iPadOffsetX+g_iPadScale*x), (2*g_iPadOffsetY+g_iPadScale*y))

//左下角

#define ccu_lb(x,y) ccp((g_iPadScale*x), (g_iPadScale*y))

//右下角

#define ccu_rb(x,y) ccp((2*g_iPadOffsetX+g_iPadScale*x), (g_iPadScale*y))

//左上角

#define ccu_lt(x,y) ccp((g_iPadScale*x), (2*g_iPadOffsetY+g_iPadScale*y))

//右上角

#define ccu_rt(x,y) ccp((2*g_iPadOffsetX+g_iPadScale*x), (2*g_iPadOffsetY+g_iPadScale*y)) 三个参数在应该初始化的时候分别赋值: //全局变量的初始化

if(m_deviceType == e_Device_ipad){

g_iPadScale =2;

g_iPadOffsetX = 32;

g_iPadOffsetY = 64;

}else{

g_iPadScale =1;

g_iPadOffsetX = 0;

g_iPadOffsetY = 0;

}

其中x, y 为美术给的在标清(320, 480) 里面的坐标.

这么一来, 代码中只要根据美术的布局需求,用一套对应的坐标转换函数就可以了.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐