【问题标题】:On iOS, why is 100 "points" a different size on different devices?在 iOS 上,为什么 100 个“点”在不同设备上的大小不同?
【发布时间】:2017-02-08 19:27:06
【问题描述】:

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

因此,如果 2 个设备具有相同的像素密度,每个设备将 1 个点映射到 2 个像素,那么 100 个点在这些设备上将占用 200 个像素,并且它们看起来具有相同的物理尺寸。如果 Device_B 的像素密度是 Device_A 的 2 倍(并且设备 A 是 1:1 像素:点),那么 100 个点将在 Device_A 上占用 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];
}

我附上了 2 个呈现相同标签的物理设备的图像(左侧是 iPad,右侧是 iPhone)。

【问题讨论】:

  • 您似乎将“ppi”(每英寸像素数)与 1x/2x/3x 像素密度混淆了。它们是两个完全不相关的概念。
  • @rmaddy 也许我是?对我来说,这些听起来很相关。每英寸的像素数对我来说听起来像是像素密度?
  • 虽然他们没有相同的 ppi。 iPhone 6 的 ppi 比 iPad Air 2 高。

标签: ios objective-c graphics


【解决方案1】:

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

iOS 屏幕比例因子 1x、2x、3x 仅表示物理像素和屏幕点之间的关系(与密度无关的像素)。对于 iPhone6 和 7 plus 甚至不是 100% 正确,其中屏幕点以 x3 缩放像素呈现,然后以 1.15 因子下采样到真实屏幕像素。

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

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

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

【讨论】:

  • 感谢您澄清比例因子和实际 DPI 之间的差异。
猜你喜欢
  • 2020-08-10
  • 2021-04-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多