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) 里面的坐标.
这么一来, 代码中只要根据美术的布局需求,用一套对应的坐标转换函数就可以了.
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) 里面的坐标.
这么一来, 代码中只要根据美术的布局需求,用一套对应的坐标转换函数就可以了.
相关文章推荐
- Amf3+socket开发网络游戏或应用的一点研究心得
- 【iOS-Cocos2d游戏开发之十】添加粒子系统特效并解决粒子特效与Layer之间的坐标问题;
- google地图中, 纬度坐标在方形地图上定位问题的一点研究
- 【iOS-Cocos2d游戏开发之十】添加粒子系统特效并解决粒子特效与Layer之间的坐标问题;
- iOS开发有关导航条坐标问题
- Vue开发跨端应用(五)cordova-ios运行问题
- IOS开发(13)IOS 应用开发杂记(常见问题)
- iOS开发参考:iOS应用开发八大问题
- 转载:Amf3+socket开发网络游戏或应用的一点研究心得
- 关于iOS开发企业应用问题整理
- IOS应用内购买(IAP)开发时遇到的几个问题总结
- IOS应用开发-图片处理(拉伸图片 创建缩略图 解决图片旋转的问题 图片编码及上传 将图片写入磁盘)
- 解决cocoapods diff: /../Podfile.lock: No such file or directory以及iOS开发同一应用多环境配置的问题
- vue开发spa应用时 微信支付问题(尤其是ios)
- iOS“.NET研究”平台应用开发的敏捷设计流程
- iOS App store 应用审核由于 IPv6 网络问题被拒的一点分析
- IOS应用开发-图片处理(拉伸图片 创建缩略图 解决图片旋转的问题 图片编码及上传 将图片写入磁盘)
- iOS开发问题之:应用语言是英文
- 【iOS-Cocos2d游戏开发之十】添加粒子系统特效并解决粒子特效与Layer之间的坐标问题;
- iOS开发UI篇章之应用管理的九宫格坐标计算