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

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

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

  • 相关阅读:
    FMDB(一)— 简单介绍
    产品设计之设计理念
    整理了一下浅墨大神的Visual C++/DirectX 9.0c的游戏开发手记
    使用scp免passwordserver间传递文件
    游戏架构其一:经常使用工具集合
    Failed to import package with error: Couldn't decompress package
    【从0開始Tornado建站】0.9版本号python站点代码开源--持续更新中
    【Android】 给我一个Path,还你一个酷炫动画
    codeforces Round #Pi (div.2) 567ABCD
    linux 查看磁盘使用情况
  • 原文地址:https://www.cnblogs.com/tandaxia/p/5060123.html
Copyright © 2011-2022 走看看