zoukankan      html  css  js  c++  java
  • UIScreen的 bound、frame、scale属性

    CGRect bound = [[UIScreen mainScreen] bounds];  // 返回的是带有状态栏的Rect  
    CGRect frame = [[UIScreen mainScreen] applicationFrame];  // 返回的是不带有状态栏的Rect  
    float scale = [[UIScreenmainScreen] scale]; // 得到设备的自然分辨率  
    对于scale属性需要做进一步的说明:
        以前的iphone 设备屏幕分辨率都是320*480,后来apple 在iPhone 4中采用了名为Retina的显示技术,iPhone 4采用了960x640像素分辨率的显示屏幕。由于屏幕大小没有变,还是3.5英寸,分辨率的提升将iPhone 4的显示分辨率提升至iPhone 3GS的四倍,每英寸的面积里有326个像素。
    scale属性的值有两个:
    scale = 1; 的时候是代表当前设备是320*480的分辨率(就是iphone4之前的设备)
    scale = 2; 的时候是代表分辨率为640*960的分辨率
     
    判断屏幕类型:
    [plain]  
    // 判断屏幕类型,普通还是视网膜  
        float scale = [[UIScreen mainScreen] scale];  
        if (scale == 1) {  
            bIsRetina = NO;  
            NSLog(@"普通屏幕");  
        }else if (scale == 2) {  
            bIsRetina = YES;  
            NSLog(@"视网膜屏幕");  
        }else{  
            NSLog(@"unknow screen mode !");  
        }  
    对dpi和ppi的理解:
    DPI是每英寸的点数,可以简单理解为点的密度。
    PPI是每英寸的像素数,可以简单理解为像素密度。
    点和像素有区别吗?很多时候,一个点 = 一个像素。但是,并不尽然,如iPhone的视网膜屏幕,它一个点包含了四个像素,大大提高了显示清晰度。
    使用UIScreen获取的bounds和frame,都是点的尺寸,而非像素尺寸。例如,在视网膜屏的iPhone4上,我获取的 applicationFrame大小是320x460,很明显它代表的是点的数量。假如你要显示一张图,如果该图原大小是100x200,那么显示在这 样的屏幕上,它的实际显示出来的尺寸将只有原来大小的一半,但它的像素数并未改变。更加需要考虑的是,如果你要对这张图进行缩放,那么缩放率该按照实际显 示尺寸计算,还是按照实际像素数计算?这一块很重要,曾走了不少弯路,答案是前者。
     
  • 相关阅读:
    Eureka的集群配置
    spring-cloud_Eureka服务注册与发现
    ADB常用命令
    教你如何修改Python的pip源镜像
    【vscode】【python】自定义代码自动补全
    【docker】删除docker中的运行日志
    MVC页面上多个提交按钮提交到不同的Action
    MongoDB在windows服务器安装部署及远程连接MongoDB
    sql如果存在就修改不存在就新增
    c#序列化和反系列化json与类型对象转换
  • 原文地址:https://www.cnblogs.com/wangyang1213/p/5488622.html
Copyright © 2011-2022 走看看