iPhone 点与物理尺寸的关系

The Ultimate Guide To iPhone Resolutions

最近思考设计稿一个字号显示在不同设备物理尺寸是否一致,即对于用户看到的大小是否一致?

因此从理论和实践两个方面对于三个尺寸(4、4.7、5.5)英寸的差异。

1. 理论:

参考资料:The Ultimate Guide To iPhone Resolutions https://www.paintcodeapp.com/news/ultimate-guide-to-iphone-resolutions

根据上图的计算每个点对应物理尺寸,公式为:

1
2
3
piexl / inch = (point * (render * downsmaping)) / inch 

inch / point = (render * downsmaping) / (piexl / inch)

每个点的大小 等于 每个点实际对应的像素数 除以 每英寸像素(PPI)

render downsmaping piexl / inch inch / point 20 * (inch / point)
4” 2 1 326 0.00613497 0.12269939
4.7” 2 1 326 0.00613497 0.12269939
5.5” 3 1/1.15 401 0.00650548 0.13010951

1.06039312336 = 0.00650548 / 0.00613497

结论:4” 和 4.7” 完全一致,5.5”同样点数要比其他的大,约为1.06倍。

2. 实践:

写了一个Demo https://github.com/gewill/Demo/tree/PPI ,真机量了一下物理尺寸也和上面的结论一致。

1
2
3
4
5
6
7
8
9
10
11
12
13
/// 各种字号的文本
func drawLabel() {
var y: CGFloat = 40
for size in 13...24 {
let label = UILabel()
label.text = "Font size: \(size)-壹拾贰亿拾陆-@#¥ABCxyz"
label.font = UIFont.systemFont(ofSize: CGFloat(size))
label.backgroundColor = UIColor.green.withAlphaComponent(0.4)
y += CGFloat(size) + 20
label.frame = CGRect(x: 0, y: y, width: UIScreen.main.bounds.width, height: CGFloat(size))
self.view.addSubview(label)
}
}