【发布时间】: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