Xcode10 iOS12适配带来的坑

xcode更新带来了新特性,也带来了新的坑.目前遇到了一些,做一下总结.

1.error: Multiple commands produce ·········/Info.plist':

升级后编译项目第一个遇到到的就是这个,如果直接按照提示去文件夹删除并没有作用
解决办法:Build phase > 直接搜索plist相关的删除即可
或者File->WorkSpace Settings->Build System 改为Legacy Build System即可

2.因为我们用到百度地图并且手动导入的,导致libstdc++.6.0.9.tbd废弃,换用libc++.tbd即可

3.导航栏底部黑线无法找到了

之前都是这样找到黑线然后修改颜色或者隐藏,

- (UIImageView *)findHairlineImageViewUnder:(UIView *)view {
    if ([view isKindOfClass:UIImageView.class] && view.bounds.size.height <= 1.0) {
        return (UIImageView *)view;
    }
    for (UIView *subview in view.subviews) {
        UIImageView *imageView = [self findHairlineImageViewUnder:subview];
        if (imageView) {
            return imageView;
        }
    }
    return nil;
}

到iOS12发现黑线又显现了,通过视图发现黑线还是在navigationBar上但是它的subviews已经为0了,原因:由于是在viewDidLoad里面调用的.在iOS12上布局应该发生了变化,于是我在viewDidLayoutSubviews调用上述方法发现可以改变那条黑线.
也可以改用

[self.navigationBar setShadowImage:[UIImage colorToImageWithColor:[UIColor whiteColor]]];

4.打包出现Failed to verify bitcode in xxxx.framework

个人用的是公司的SDK导致了这个问题,可以用File->WorkSpace Settings->Build System 改为Legacy Build System的方式.
后来又重新将framework的bitcode改为NO然后重新打包,又把Build System改回原来的Default模式,打包又可以了.

5.启动页适配:增加两张启动页即可

iPhone XR:828px x 1792px
iPhone XS Max: 1242px x 2688px

iOS12.1导致tabbar跳动

个人将
self.extendedLayoutIncludesOpaqueBars 设置为NO解决了该问题.当然默认也是NO

也可参考QMUI_iOS解决方案

6.使用HKHealthStore问题

获取授权时,程序闪退,并提示*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'NSHealthShareUsageDescription must be set in the app's Info.plist in order to request read authorization for the following types: HKQuantityTypeIdentifierStepCount'
将info.plist中权限描述,改为英语即可visit read "Health"and read data

7.iOS12.2UIWebView无法播放视频

报错信息:Unhandled Promise Rejection: NotAllowedError: The request is not allowed by the user agent or the platform in the current context, possibly because the user denied permission.

解决办法:mediaPlaybackRequiresUserAction设置为NO;这个属性的意思是:是否需要用户操作才能播放视频,默认为YES;

你可能感兴趣的:(Xcode10 iOS12适配带来的坑)