据我了解,如果你在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右侧)。
答案 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
英寸
200/326 x 60/326 = 0,61 X 0,18
英寸