在平时开发过程中,比如在Unity和iOS交互中,可能会有一些单位转化的问题。比如原生的webview设置边距是需要用到pt单位的值,而Unity传过去的是px单位的值,这样就会导致不同设备显示的就有问题了。话不多说结论如下(约分之后):
CGSize screenSize = [UIScreen mainScreen].nativeBounds.size; // 逻辑分辨率
CGSize logicSize = [UIScreen mainScreen].bounds.size; // 屏幕分辨率
float scale = sqrt(pow(screenSize.width, 2) + pow(screenSize.height, 2)) / sqrt(pow(logicSize.width, 2) + pow(logicSize.height, 2)); // 缩放比
// pt = px / scale
说明如下(约分之后):
*正常的算法应该为
由于@1x设备为iPhone 3GS的屏幕分辨率和逻辑分辨率的数值都为320x480,所以下面这项可以直接约分为1
所以最后的转化公式为