ios開發(fā)之顯示一個真實(shí)長寬為4X2厘米的圖片
單位:
px:像素,構(gòu)成影像的最小單位
ppi:Pixels Per Inch,即每英寸所擁有的像素數(shù)目,屏幕像素密度
pt:iOS開發(fā)單位,即point,
我們先求一下ppi
公式:

iPhone 3G 的 ppi 計算:

iPhone 3G 的屏幕像素密度 ppi 是每英寸 163 個像素,而蘋果又規(guī)定在這種非視網(wǎng)膜的 iPhone 上,1pt=1px,所以我們也可以說每英寸上有 163 個 pt,那么 1pt=1/163 英寸,這就是 iOS 開發(fā)單位 pt 的長度:1pt = 1 /163 英寸 * 25.4毫米 ≈ 0.16 毫米。
所以根據(jù)上面的公式進(jìn)行計算:
//獲取手機(jī)的屏幕尺寸(英寸)
+ (double)deviceTypeSizeInches
{
? ? structutsnamesystemInfo;
? ? uname(&systemInfo);
? ? NSString *platform = [NSString stringWithCString:systemInfo.machine encoding:NSASCIIStringEncoding];
? ? //------------------------------iPhone---------------------------
? ? //"iPhone 2G"
? ? if([platformisEqualToString:@"iPhone1,1"])return3.5;
? ? //"iPhone 3G"
? ? if([platformisEqualToString:@"iPhone1,2"])return3.5;
? ? //"iPhone 3GS"
? ? if([platformisEqualToString:@"iPhone2,1"])return3.5;
? ? //"iPhone 4"
? ? if([platformisEqualToString:@"iPhone3,1"] ||
? ? ? ? [platformisEqualToString:@"iPhone3,2"] ||
? ? ? ? [platformisEqualToString:@"iPhone3,3"])return3.5;
? ? //"iPhone 4S"
? ? if([platformisEqualToString:@"iPhone4,1"])return3.5;
? ? //"iPhone 5"
? ? if([platformisEqualToString:@"iPhone5,1"] ||
? ? ? ? [platformisEqualToString:@"iPhone5,2"])return4.0;
? ? //"iPhone 5c"
? ? if([platformisEqualToString:@"iPhone5,3"] ||
? ? ? ? [platformisEqualToString:@"iPhone5,4"])return4.0;
? ? //"iPhone 5s"
? ? if([platformisEqualToString:@"iPhone6,1"] ||
? ? ? ? [platformisEqualToString:@"iPhone6,2"])return4.0;
? ? //"iPhone 6"
? ? if([platformisEqualToString:@"iPhone7,2"])return4.7;
? ? //"iPhone 6 Plus"
? ? if([platformisEqualToString:@"iPhone7,1"])return5.5;
? ? //"iPhone 6s"
? ? if([platformisEqualToString:@"iPhone8,1"])return4.7;
? ? //"iPhone 6s Plus"
? ? if([platformisEqualToString:@"iPhone8,2"])return5.5;
? ? //"iPhone SE"
? ? if([platformisEqualToString:@"iPhone8,4"])return4.0;
? ? //"iPhone 7"
? ? if([platformisEqualToString:@"iPhone9,1"] ||
? ? ? ? [platformisEqualToString:@"iPhone9,3"])return4.7;
? ? //"iPhone 7 Plus"
? ? if([platformisEqualToString:@"iPhone9,2"] ||
? ? ? ? [platformisEqualToString:@"iPhone9,4"])return5.5;
? ? //"iPhone 8"
? ? if([platformisEqualToString:@"iPhone10,1"] ||
? ? ? ? [platformisEqualToString:@"iPhone10,4"])return4.7;
? ? //"iPhone 8 Plus"
? ? if([platformisEqualToString:@"iPhone10,2"] ||
? ? ? ? [platformisEqualToString:@"iPhone10,5"])return5.5;
? ? //"iPhone X"
? ? if([platformisEqualToString:@"iPhone10,3"] ||
? ? ? ? [platformisEqualToString:@"iPhone10,6"])return5.8;
? ? //"iPhone XR"
? ? if([platformisEqualToString:@"iPhone11,8"])return6.1;
? ? //"iPhone XS"
? ? if([platformisEqualToString:@"iPhone11,2"])return5.8;
? ? //"iPhone XS Max"
? ? if([platformisEqualToString:@"iPhone11,4"] ||
? ? ? ? [platformisEqualToString:@"iPhone11,6"])return6.5;
? ? //"iPhone 11
? ? if([platformisEqualToString:@"iPhone12,1"])return6.1;
? ? //"iPhone 11 Pro"
? ? if([platformisEqualToString:@"iPhone12,3"])return5.8;
? ? //"iPhone 11 Pro Max"
? ? if([platformisEqualToString:@"iPhone12,5"])return6.5;
? ? return 4.0;
}
////////////////
_cheimageview.image=[UIImage imageNamed:@"icon-01.jpg"];
? ? //獲取手機(jī)的屏幕尺寸(英寸)
? ? double pmsize=[GlobalValue deviceTypeSizeInches];
? ? //計算ppi
? ? double ppi = sqrt( Screen_Width*Screen_Width + Screen_Height*Screen_Height ) / pmsize ;
? ? NSLog(@"寬度:%f;ppi:%f",Screen_Width,ppi);
? ? //iphoneX 寬度:375.000000;ppi:154.208597
? ? //iphone SE 寬度:320.000000;ppi:162.984662
? ? //
? ? //154.208597/162.984662*192.55;
? ? //pt 的長度(毫米)
? ? doublept=1.0/ppi *25.4;
? ? NSString*str=[NSStringstringWithFormat:@"%.4f", pt];
? ? doubleff=[strdoubleValue];
? ? _cheimageWidth.constant=40.0/ff;
? ? _cheimageHeight.constant=20.0/ff;?
? ? NSLog(@"圖片寬度:%f",40.0/ff);
這樣就可以實(shí)現(xiàn)上面的需求了。
文章參考了: