在iOS上,为什么100个“点数”在不同设备上的大小不同?

时间:2017-02-08 19:27:07

标签: ios objective-c graphics

据我了解,如果你在iOS中指定了100个点的大小,它应该被解释为“100个密度独立像素”,这样它将在屏幕上占用相同数量的物理空间,与设备。

因此,如果2个设备具有相同的像素密度,每个映射1个点到2个像素,100个点将占用这些设备上的200个像素,并且它们看起来是相同的物理尺寸。如果Device_B具有Device_A的像素密度的2倍(并且设备A是1:1像素:点),那么在Device_A上100个点将占用100个像素,而在Device_B上将占用200个像素,这将消耗相同的物理屏幕空间。我错过了什么吗?

我在iPhone 6和iPad Air 2上测试了尺寸为100x30的UILabel,它们绝对不会在屏幕上占用相同的物理尺寸 - iPhone 6屏幕上的100x30标签看起来大约是2 / 3与iPad相比,物理尺寸相同。

这是非常简单的测试代码

- (void)viewDidLoad {
    [super viewDidLoad];

    [self.view setBackgroundColor:[UIColor blueColor]];

    UILabel *testLabel = [[UILabel alloc] initWithFrame:CGRectMake(20, 20, 100, 30)];
    testLabel.text = @"Test Label";
    testLabel.backgroundColor = [UIColor greenColor];

    [self.view addSubview:testLabel];
}

我附上了两个渲染相同标签的物理设备的图像(iPad左侧,iPhone右侧)。

enter image description here

1 个答案:

答案 0 :(得分:3)

Ppi是每英寸像素数,其中像素表示物理设备像素。

iOS屏幕比例因子1x,2x,3x仅表示物理像素与屏幕点(与密度无关的像素)之间的关系。即使不是100%正确的iPhone6&amp; 7 plus,其中屏幕点以x3比例像素呈现,然后使用因子1,15对真实屏幕像素进行下采样。<​​/ p>

iPad Air 2 ppi = 264 iPhone 6 ppi = 326 两者都有比例因子2x。因此,尺寸为100x30的标签在每个设备上的物理像素大小为200x60。 并且

在iPad上

200/264 x 60/264 = 0,76 X 0,23英寸

在iPhone6上

200/326 x 60/326 = 0,61 X 0,18英寸