zoukankan      html  css  js  c++  java
  • 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: %@, 
    orientaion: %@, 
    window 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,这个符合所见即所得的原则。

  • 相关阅读:
    Java实现 LeetCode 400 第N个数字
    Java实现 LeetCode 400 第N个数字
    Java实现 LeetCode 399 除法求值
    Java实现 LeetCode 399 除法求值
    Java实现 LeetCode 399 除法求值
    Java实现 LeetCode 398 随机数索引
    Java实现 LeetCode 398 随机数索引
    Java实现 LeetCode 398 随机数索引
    linux中的cd ..和cd -命令有什么区别?
    GCC使用
  • 原文地址:https://www.cnblogs.com/allanliu/p/4183352.html
Copyright © 2011-2022 走看看