刚好看到一个刻度尺文章,实现手机屏幕上画刻度尺。
然后就有一个疑问:这个现实中的1mm(1毫米)长度与手机像素之间的换算比怎么来的呢?
看了下demo代码,发现这样写的:
CGFloat sc_w = [[UIScreen mainScreen] bounds].size.width; CGFloat sc_h = [[UIScreen mainScreen] bounds].size.height; CGFloat sc_s; CGFloat ff = [[UIScreen mainScreen] nativeBounds].size.height; if (ff == 1136) { sc_s = 4.0; }else if(ff == 1334.0){ sc_s = 4.7; }else if (ff== 1920){ sc_s = 5.5; }else if (ff== 2436){ sc_s = 5.8; }else{ sc_s = 3.5; } //1mm米的像素点 pmm = sqrt(sc_w * sc_w + sc_h * sc_h)/(sc_s * 25.4);//mm
以上这个pmm就是得到的 1mm = pmm像素
何解呢?
原来是这样:
1、根据手机像素值:[UIScreen mainScreen] nativeBounds,得到手机大小英寸(4、4.7、5.5等等)
2、根据手机宽高,根据三角形勾股定律,计算出斜边长度 Xiebian= sqrt(sc_w * sc_w + sc_h * sc_h)
3、重点是这个25.4,之前一直不理解这个数字,终于发现是因为:1 英寸=2.54 厘米,也就是25.4mm,就能得到一个斜边对应的毫米值:(sc_s * 25.4)
4、然后就是用得到的斜边长度像素/毫米值,得到1mm对应的像素值了
5、最后就根据这个值 慢慢画刻度啦~
soga~