zoukankan      html  css  js  c++  java
  • iOS项目之iPhoneX遇到的坑

    问题一:

      今天升级到Xcode 9.0,里面多了iPhone 8,iPhone 8P,iPhone X三款手机模拟器,而且发现最多可以同时运行五个模拟器。但随之而来的问题也出现了,就是 iPhone X 的屏幕适配问题,这里我就发现了 Navigation 的高度不一样了,所以先解决这个吧,以后有其他问题,再进行研究。

      以前的 iPhone 手机的状态栏高度是 20 的高度,如今 iPhone X 手机状态栏的高度是 44 (我自己的计算),但以前写的宏基本上就不能这样统一的用了,所以做了一些修改。

    // 在程序启动的时候,判断手机型号
    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
        if (iPhoneX) {
            // 如果为 iPhone X 手机时
            [SJXSaveService sjx_setObject:@(44 + 44) forKey:@"Nav_Height"];
        } else {
            [SJXSaveService sjx_setObject:@(20 + 44) forKey:@"Nav_Height"];
        }
    }    
    // 在自己的 .pch 文件中添加
    #define iPhoneX                     (SCREEN_HEIGHT == 812)
    #define iPhone6P                    (SCREEN_HEIGHT == 736)
    #define iPhone6                     (SCREEN_HEIGHT == 667)
    #define iPhone5                     (SCREEN_HEIGHT == 568)
    #define iPhone4                     (SCREEN_HEIGHT == 480)
    
    /* Nav_Height */
    #define Nav_Height   [[SJXSaveService sjx_objectForKey:@"Nav_Height"] floatValue]

      这样,在程序中还是可以统一使用之前 Navigation 高度的宏定义了。

     问题二:

      之前在项目中使用了下面的代码来获取网络状态:

    NSArray *children = [[[app valueForKeyPath:@"statusBar"]valueForKeyPath:@"foregroundView"]subviews];

      然而在 iPhone X 手机上运行时,会报错:

    Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<UIStatusBar_Modern 0x7fd59fc072e0> valueForUndefinedKey:]: this class is not key value coding-compliant for the key foregroundView.'

      所以只好放弃这种方法,使用 AFNetworking 里的 AFNetworkReachabilityManager 来获取网络状态了。

  • 相关阅读:
    Oracle错误——ORA-12704:字符集不匹配
    nodejs 错误问题解决
    windows 卸载 node.js 怎么卸载搜索
    Git安装配置及基本使用(windows)
    破解photoshop cs6 mac
    将text中的数字转换为字符串
    JavaScript 为什么不推荐使用 eval?
    Permission denied (publickey).
    linux 命令
    恢复 git reset -hard 的误操作
  • 原文地址:https://www.cnblogs.com/sjxjjx/p/7562594.html
Copyright © 2011-2022 走看看