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

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

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

posted @ 2015-12-20 10:49  谈晓鸣  阅读(5918)  评论(2编辑  收藏  举报