zoukankan      html  css  js  c++  java
  • iOS屏幕尺寸和分辨率了解

    1、截至目前为止,主流的iOS设备屏幕有以下几种:

    ---------------  iPhone  ---------- --------  iPad ------------

    2、iOS设备屏幕分辨率:(ppi是像素密度单位【像素/英寸】,401ppi表示每英寸上有401个像素)

      

      ppi(pixel per inch)计算,以6Plus为例:

      屏幕分辨率1920 x 1080,  屏幕尺寸5.5英寸(手机屏幕对角物理线的长度),

      1920 x 1920 + 1080 x 1080 = 4852800, 开根号为:2202.907...

      2202.907 / 5.5 = 400.528 ppi, 大约就是401ppi

    3、iOS的三种分辨率

       1)、资源分辨率:资源图片的大小,单位是像素。

       2)、设计分辨率:逻辑上的屏幕大小,单位是点。我们在Interface Builder设计器中的单位和程序代码中的单位都是设计分辨率中的“点”。

       3)、是以像素为单位的屏幕大小,所有的应用都会渲染到这个屏幕上展示给用户。

         iPhone 6 Plus和 6S Plus是最为特殊的设备,资源分辨率与屏幕分辨率的比例是1.15 : 1, 而其他的设备比例是1 : 1。不同的人群关注的分辨率也是不同的,UI设计人员主要关注的是资源分辨率,开发人员主要关注的是设计分辨率,而一般用户主要关注的屏幕分辨率。

      

     4、获取设备屏幕信息

      获取当前移动设备对象:[UIDevice currentDevice]

      UIDevice类所有信息

    NS_CLASS_AVAILABLE_IOS(2_0) @interface UIDevice : NSObject 
    
    + (UIDevice *)currentDevice;
    
    @property(nonatomic,readonly,strong) NSString    *name;              // e.g. "My iPhone"
    @property(nonatomic,readonly,strong) NSString    *model;             // e.g. @"iPhone", @"iPod touch"
    @property(nonatomic,readonly,strong) NSString    *localizedModel;    // localized version of model
    @property(nonatomic,readonly,strong) NSString    *systemName;        // e.g. @"iOS"
    @property(nonatomic,readonly,strong) NSString    *systemVersion;     // e.g. @"4.0"
    @property(nonatomic,readonly) UIDeviceOrientation orientation __TVOS_PROHIBITED;       // return current device orientation.  this will return UIDeviceOrientationUnknown unless device orientation notifications are being generated.
    
    @property(nullable, nonatomic,readonly,strong) NSUUID      *identifierForVendor NS_AVAILABLE_IOS(6_0);      // a UUID that may be used to uniquely identify the device, same across apps from a single vendor.
    
    @property(nonatomic,readonly,getter=isGeneratingDeviceOrientationNotifications) BOOL generatesDeviceOrientationNotifications __TVOS_PROHIBITED;
    - (void)beginGeneratingDeviceOrientationNotifications __TVOS_PROHIBITED;      // nestable
    - (void)endGeneratingDeviceOrientationNotifications __TVOS_PROHIBITED;
    
    @property(nonatomic,getter=isBatteryMonitoringEnabled) BOOL batteryMonitoringEnabled NS_AVAILABLE_IOS(3_0) __TVOS_PROHIBITED;  // default is NO
    @property(nonatomic,readonly) UIDeviceBatteryState          batteryState NS_AVAILABLE_IOS(3_0) __TVOS_PROHIBITED;  // UIDeviceBatteryStateUnknown if monitoring disabled
    @property(nonatomic,readonly) float                         batteryLevel NS_AVAILABLE_IOS(3_0) __TVOS_PROHIBITED;  // 0 .. 1.0. -1.0 if UIDeviceBatteryStateUnknown
    
    @property(nonatomic,getter=isProximityMonitoringEnabled) BOOL proximityMonitoringEnabled NS_AVAILABLE_IOS(3_0); // default is NO
    @property(nonatomic,readonly)                            BOOL proximityState NS_AVAILABLE_IOS(3_0);  // always returns NO if no proximity detector
    
    @property(nonatomic,readonly,getter=isMultitaskingSupported) BOOL multitaskingSupported NS_AVAILABLE_IOS(4_0);
    
    @property(nonatomic,readonly) UIUserInterfaceIdiom userInterfaceIdiom NS_AVAILABLE_IOS(3_2);
    
    - (void)playInputClick NS_AVAILABLE_IOS(4_2);  // Plays a click only if an enabling input view is on-screen and user has enabled input clicks.
    
    @end

     

     ios移动设备类型枚举判断:

    typedef NS_ENUM(NSInteger, UIUserInterfaceIdiom) {
        UIUserInterfaceIdiomUnspecified = -1,
        UIUserInterfaceIdiomPhone NS_ENUM_AVAILABLE_IOS(3_2), // iPhone and iPod touch style UI
        UIUserInterfaceIdiomPad NS_ENUM_AVAILABLE_IOS(3_2), // iPad style UI
        UIUserInterfaceIdiomTV NS_ENUM_AVAILABLE_IOS(9_0), // Apple TV style UI
    };

    [UIDevice currentDevice].userInterfaceIdiom ==  UIUserInterfaceIdiomPhone  // 表示iPhone设备

    [UIDevice currentDevice].userInterfaceIdiom ==  UIUserInterfaceIdiomPad     // 表示iPad设备

    [UIDevice currentDevice].userInterfaceIdiom ==  UIUserInterfaceIdiomTV  // 表示Apple TV设备

    [UIDevice currentDevice].userInterfaceIdiom ==  UIUserInterfaceIdiomUnspecified  // 表示未知设备

    //示例:详细判断iPhone设备类型

    //详细判断iPhone设备信息, 区分横屏和竖屏
        if ([UIDevice currentDevice].userInterfaceIdiom == UIUserInterfaceIdiomPhone){
            //获取屏幕尺寸信息
            CGSize screenSize = [UIScreen mainScreen].bounds.size;
            
            //竖屏情况
            if (screenSize.height > screenSize.width){
                if (screenSize.height == 568){
                    //iPhone 5/5S/5C (iPod / iPod touch) 等设备
                }
                else if (screenSize.height == 667){
                    //iPone 6 / 6S 等设备
                }
                else if (screenSize.height == 736){
                    //iPone 6 Plus / 6S Plus 等设备
                }
                else{
                    //iPhone 4 / 4S 等设备
                }
            }
            
            //横屏情况
            if (screenSize.width > screenSize.height){
                if (screenSize.width == 568){
                    //iPhone 5/5S/5C (iPod / iPod touch) 等设备
                }
                else if (screenSize.width == 667){
                    //iPone 6 / 6S 等设备
                }
                else if (screenSize.width == 736){
                    //iPone 6 Plus / 6S Plus 等设备
                }
                else{
                    //iPhone 4 / 4S 等设备
                }
            }
        }

    //说明:在iPad和iPhone屏幕中,一般会有状态栏、标签栏、导航栏(或工具栏)以及内容视图部分,它们的尺寸也是固定的。状态栏占20点,导航栏占44点,标签栏占49点。

     ppi(pixel  per  inch): 表示每英寸所包含的像素点数目,数值越高,屏幕能以更高密度显示图像

    dpr(device pixel ratio): 设备像素比,设备像素 / 设备独立像素,表示设备独立像素到设备像素的转换关系

    版权声明


    作者:TDX

    出处:博客园TDX的技术博客--http://www.cnblogs.com/tandaxia

    您的支持是对博主最大的鼓励,感谢您的认真阅读。

    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

  • 相关阅读:
    rs
    stm32f767 usoc3
    stm32f767 RTT 日志
    stm32f767 标准库 工程模板
    stm32f767 HAL 工程模板
    docker tab 补全 linux tab 补全
    docker anconda 依赖 下载 不了
    docker run 常用 指令
    linux scp 命令
    Dockerfile 常用参数说明
  • 原文地址:https://www.cnblogs.com/tandaxia/p/5060123.html
Copyright © 2011-2022 走看看