iOS 11适配

1,导航栏返回按钮自定义

以前都是使用

    //设置返回按钮
    UIBarButtonItem  *leftBaItem = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"返回new2.png"] style:UIBarButtonItemStylePlain target:target action:selector];
    leftBaItem.tintColor = [UIColor whiteColor];
    UIBarButtonItem *spaceButton = [[UIBarButtonItem alloc]
                                    initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace
                                    target:nil action:nil];
    spaceButton.width = -10;
    
    navigationItem.leftBarButtonItems = @[spaceButton,leftBaItem];

通过设置一个spaceButton ,然后设置其的宽度为负数来实现自定义返回按钮
但是在iOS11 上边无效了(==使用xcode 8 打包的app 在iOS11设备没有这个问题==)

解决办法:

//在基类中设置
    UIImage *backButtonImage = [[UIImage imageNamed:@"返回new2.png"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
    self.navigationController.navigationBar.backIndicatorImage = backButtonImage;
    self.navigationController.navigationBar.backIndicatorTransitionMaskImage = backButtonImage;

2,CallKit 来电识别

在iOS 10中,苹果增加了来电识别的扩展,可以实现拦截通话或者来电显示电话号码信息

在iOS 10 里边,往系统数据写入电话号码信息时,==需要在号码前增加国际码==(==中国:86==)

在iOS 11中11位的手机号依然可以识别,但是==短号无法识别==,琢磨了半天,也没有插到任何资料有解决这个问题的,索性把==86==删掉,居然正常了

//判断系统版本是11以上
    float version = [[[UIDevice currentDevice] systemVersion] floatValue];
    if (version >= 11.0) {
        if (phone.length<11){
             tempValue = [NSString stringWithFormat:@"%@" , phone] ;
        }
    }

ps:==因为在xcode 9上边编译的app有各种适配问题,所以现在上线的包还是用xcode8编译打包,使用上边的判断版本的方法,其实xcode9增加了一下判断版本的方法==

    //判断版本
    if (@available(iOS 11.0, *)) {
        
    }

其他:
iOS 11增加了清空垃圾识别数据的方法

/**
 Remove all currently-stored identification entries.

 May only be used when `-isIncremental` returns YES, indicating that the request should provide incremental entries and thus may use this
 API to remove all previously-added identification entries.
 */
- (void)removeAllIdentificationEntries API_AVAILABLE(ios(11.0));

3,tabbar 高度

在iPhone X上边 tabbar 的高度为83(之前是49)

4,使用[[[UIApplication sharedApplication] valueForKeyPath:@"statusBar"] valueForKeyPath:@"foregroundView"] 判断网络,

在iPhone X上会闪退,iPhone X的状态栏明显和其他设备不一样了,没有foregroundView这个属性,导致找不到方法,闪退

其他待补充...

你可能感兴趣的:(iOS 11适配)