剛好看到一個刻度尺文章,實現手機屏幕上畫刻度尺。
然后就有一個疑問:這個現實中的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~