美文网首页
ios开发之显示一个真实长宽为4X2厘米的图片

ios开发之显示一个真实长宽为4X2厘米的图片

作者: 猿王 | 来源:发表于2020-05-07 14:01 被阅读0次

    ios开发之显示一个真实长宽为4X2厘米的图片

    单位:

    px:像素,构成影像的最小单位

    ppi:Pixels Per Inch,即每英寸所拥有的像素数目,屏幕像素密度

    pt:iOS开发单位,即point,

    我们先求一下ppi

    公式:

    iPhone 3G 的 ppi 计算:

    iPhone 3G 的屏幕像素密度 ppi 是每英寸 163 个像素,而苹果又规定在这种非视网膜的 iPhone 上,1pt=1px,所以我们也可以说每英寸上有 163 个 pt,那么 1pt=1/163 英寸,这就是 iOS 开发单位 pt 的长度:1pt = 1 /163 英寸 * 25.4毫米 ≈ 0.16 毫米。

    所以根据上面的公式进行计算:

    //获取手机的屏幕尺寸(英寸)

    + (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"];

        //获取手机的屏幕尺寸(英寸)

        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);

    这样就可以实现上面的需求了。

    文章参考了:

    iOS尺寸单位pt、ppi与px之间换算关系

    ios开发之--所有设备的屏幕尺寸

    相关文章

      网友评论

          本文标题:ios开发之显示一个真实长宽为4X2厘米的图片

          本文链接:https://www.haomeiwen.com/subject/sixaghtx.html