iOS 8版本信息与屏幕尺寸

原文  http://www.cnblogs.com/smileEvday/p/iOS8.html

 

1、UIWindow的bounds

iOS 7之前Window的bounds不会随着方向而变化,但是到了iOS 8以后,随着设备方向的旋转,window.bounds.size.width和window.bounds.size.height也会相应发生变化。

做个很简单的测试,代码如下:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
  // Override point for customization after application launch.

  [[NSNotificationCenter defaultCenter] addObserver:self
                       selector:@selector(orientationChanged:)
                         name:UIDeviceOrientationDidChangeNotification
                         object:nil];

  return YES;
}

- (void)orientationChanged:(NSNotification*)noti {

  UIDeviceOrientation orientation = [UIDevice currentDevice].orientation;
  NSString *orientationDes = nil;
  switch (orientation) {
    case UIDeviceOrientationLandscapeLeft:
      orientationDes = @"UIInterfaceOrientationLandscapeRight";
      break;
    case UIDeviceOrientationLandscapeRight:
      orientationDes = @"UIInterfaceOrientationLandscapeLeft";
      break;
    case UIDeviceOrientationPortrait:
      orientationDes = @"UIInterfaceOrientationPortrait";
      break;
    case UIDeviceOrientationPortraitUpsideDown:
      orientationDes = @"UIInterfaceOrientationPortraitUpsideDown";
      break;
    default:
      orientationDes = @"";
      break;
  }

  NSLog(@"system ver: %@, \rorientaion: %@, \rwindow bounds: %@",
      [UIDevice currentDevice].systemVersion,
      orientationDes,
      NSStringFromCGRect(self.window.bounds));
}

示例代码很简单,新建一个工程,然后在delegate中直接添加以上代码即可。

iOS 8上运行结果为:

2014-06-04 09:26:32.016 SviOS8[4143:61114] system ver: 8.0,
orientaion: UIInterfaceOrientationLandscapeRight,
window bounds: {{0, 0}, {320, 480}}
2014-06-04 09:26:34.788 SviOS8[4143:61114] system ver: 8.0,
orientaion: UIInterfaceOrientationPortrait,
window bounds: {{0, 0}, {480, 320}}
2014-06-04 09:26:35.791 SviOS8[4143:61114] system ver: 8.0,
orientaion: UIInterfaceOrientationLandscapeLeft,
window bounds: {{0, 0}, {320, 480}}
2014-06-04 09:26:47.468 SviOS8[4143:61114] system ver: 8.0,
orientaion: UIInterfaceOrientationPortraitUpsideDown,
window bounds: {{0, 0}, {480, 320}}

iOS 7及之前的版本运行结果为:

2014-06-04 09:39:00.527 SviOS8[4380:70b] system ver: 7.0.3,
orientaion: UIInterfaceOrientationLandscapeRight,
window bounds: {{0, 0}, {320, 480}}
2014-06-04 09:39:00.895 SviOS8[4380:70b] system ver: 7.0.3,
orientaion: UIInterfaceOrientationPortrait,
window bounds: {{0, 0}, {320, 480}}
2014-06-04 09:39:01.225 SviOS8[4380:70b] system ver: 7.0.3,
orientaion: UIInterfaceOrientationLandscapeLeft,
window bounds: {{0, 0}, {320, 480}}
2014-06-04 09:39:11.004 SviOS8[4380:70b] system ver: 7.0.3,
orientaion: UIInterfaceOrientationPortraitUpsideDown,
window bounds: {{0, 0}, {320, 480}}

通过对比我们可以清晰的看到iOS 8中UIWindow在处理旋转时策略的变更,虽然会因为与之前的版本不同导致现有项目布局存在的bug,但是可以看到iOS 8中的处理方式更加符合我们的预期,在竖向的时候我们就获取到width < height, 在横向则是 width > height,这个符合所见即所得的原则。

时间: 2024-11-02 23:32:51

iOS 8版本信息与屏幕尺寸的相关文章

【ios开发】 判断设备屏幕尺寸、分辨率

IOS 设备现有的分辨率如下:iPhone/iPod Touch普通屏                          320像素 x 480像素       iPhone 1.3G.3GS,iPod Touch 1.2.33:2 Retina 屏           640像素 x 960像素        iPhone 4.4S,iPod Touch 416:9 Retina 屏               640像素 x 1136像素      iPhone 5,iPod Touch 5

获取当前IOS设备的CPU型号,CPU核数,GPU,GPU核数,屏幕分辨率,屏幕尺寸,PPI等信息

今天和大家一起分享下如何获取当前IOS设备的CPU型号,CPU核数,GPU,GPU核数,屏幕分辨率,屏幕尺寸,PPI等信息.相信各位发现通过苹果官方开放的API想要获取当前设备以上的一些信息似乎做不到.如今苹果的硬件更新速度相当的快,还要在网上发现有有心人收集了所有已发布苹果设备的相关设备信息,且不定期回去更新.详情请见:Blake's iOS Device Specifications Grid http://www.blakespot.com/ios_device_specification

[Swift通天遁地]五、高级扩展-(1)快速检测设备属性:版本、类型、屏幕尺寸

本文将演示如何快速检测设备的各种属性. 首先确保在项目中已经安装了所需的第三方库. 点击[Podfile],查看安装配置文件. 1 platform :ios, '12.0' 2 use_frameworks! 3 4 target 'DemoApp' do 5 source 'https://github.com/CocoaPods/Specs.git' 6 pod "Device", '~> 2.0.0' 7 end 根据配置文件中的相关配置,安装第三方库. 然后点击打开[D

从AppStore获取一个iOS App的版本信息

做了一个iOS下的App,普通情况下,AppStore会提示更新的,但是用户如果没开推送,或者不打开AppStore,是不知道有新版本的,所以要做版本更新提醒,当AppStore上有新的版本时,提示用户进行更新.如何关键是如何获得AppStore上的版本信息,可以通过苹果提供的REST接口进行查询. NSString *urlStr = [[NSString alloc] initWithFormat:@"http://itunes.apple.com/lookup?id=%@",@&

Android设备网络、屏幕尺寸、SD卡、本地IP、存储空间等信息获取工具类

Android设备网络.屏幕尺寸.SD卡.本地IP.存储空间.服务.进程.应用包名等信息获取的整合工具类. 1 package com.qiyu.ddb.util; 2 3 import android.annotation.SuppressLint; 4 import android.annotation.TargetApi; 5 import android.app.Activity; 6 import android.app.ActivityManager; 7 import androi

所有iOS 设备的屏幕尺寸

接下来几天,我会为大家分享一些开发中常用的资料和常识性的读物,方便一些入门的从业者学习. 所有iOS 设备的屏幕尺寸 之所以要写这么一点东西,是因为最近在做iPad开发. 屏幕适配比例.png iPhone 设备: iPhone 1G --- 320x480 iPhone 3G --- 320x480 iPhone 3GS --- 320x480 iPhone 4 --- 640x960 iPhone 4S --- 640x960 iPhone 5 --- 640x1136 iPhone 5S

js网页判断移动终端浏览器版本信息是安卓还是苹果ios,判断在微信浏览器跳转不同页面,生成二维码

<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>移动终端浏览器版本信息</title> </head> <body> <script type="text/javascript"> var browser = { versions: function () { var u = naviga

IOS 适应各种iphone屏幕尺寸

随着苹果产品的增多,屏幕尺寸的分类也越来越多,我们在编写程序时如何让自己的app适应苹果的不同类型的屏幕尺寸呢? 苹果公司给出的一个解决方案时,提出了一个点(point)的概念.在3gs中一个点对应一个像素,4(s)中一个点对应两个像素.在ios开发中以点作为单位更加方便,如下表中@1x就是一个点对应一个像素,@2x就是一个点对应两个像素,以此类推.每英寸有多少个像素,成为ppi.由于文字和颜色是矢量数据,将像素放大后不会出现变形,但是当图片会发生畸变,因此,我们在设计app时需要放入不同尺寸的

iPhone 屏幕适配判断 和 iOS系统版本判断

? 1 2 3 4 5 6 7 8 9 if([[[UIDevicecurrentDevice]systemVersion]floatValue]>=7.0) {     // iOS7.0及以上版本系统适配 } if([UIScreen mainScreen].bounds.size.height == 568) {     // iPhone 屏幕适配 } 可以写成宏定义放在pch文件中, ? 1 2 3 4 // 判断是否为iPhone5 #define iPhone5 ([UIScree