美文网首页
iOS11以及iPhone X 总结

iOS11以及iPhone X 总结

作者: cheer_harry | 来源:发表于2018-02-01 18:16 被阅读0次

    1、启动页的适配

    ①使用LaunchImage

    如果你使用的是LauchImage加载的启动页,那么对于他的适配就比较简单了,直接在LauchImage中添加一个1125 * 2436的启动图片启动页面即可。

    步骤:准备一张尺寸:1125 * 2436的启动图片, 将图片移动到项目中/Imagees.xcassets(或者Assets.xcassets)/LaunchImage下的iPhone X Portrait iOS 11+上面。

    注意:将图片移动进去之后,在LaunchImage中的Contents.json中会自动生成如下代码:

    {

        "extent" : "full-screen",

        "idiom" : "iphone",

        "subtype" : "2436h",

        "filename" : "1125-2436.png(此处为1125 * 2436启动图片名称)",

        "minimum-system-version" : "11.0",

        "orientation" : "portrait",

        "scale" : "3x"

    }

    ②使用Launch Screen Storyboard

    使用Launch Screen Storyboard 方式来添加的启动页,iPhone X 的状态栏由原来的 20 变为了 44。这个如果在导航的位置设置自定义的 View,在 iPhone X 上出问题。会挡住 View 的显示。所以需要在自定义启动页的时候需要专门针对iPhone X做对应的配置,需要调整下 Top 的约束,以前为 -20 ,改为 -44 ;

    2、iOS11新增版本判断API

    iOS11版本现在有了简单的API,OC也开始支持swfit的@available语法,就可以不用再手写判断iOS版本了。

    if (@available(iOS 11.0, *)) {

    // 版本适配

    }

    3、访问相册权限变更

    iOS11之前:访问相册和存储照片到相册(读写权限),需要用户授权,需要添加NSPhotoLibraryUsageDescription。

    iOS11之后:默认开启访问相册权限(读权限),无需用户授权,无需添加NSPhotoLibraryUsageDescription,适配iOS11之前的还是需要加的。 添加图片到相册(写权限),需要用户授权,需要添加NSPhotoLibraryAddUsageDescription

    4、UITableView相关适配

    www.jianshu.com/p/73394f7518c8

    5、iPhone X导航栏适配

    导航栏新增了一种大标题样式,默认设置是不开启,所以不需要修改。

    iOS 11以前,导航栏的高度是64,其中状态栏statusBar的高度是20,底部TabBar的高度是49。

    iOS 11之后,iPhone X导航栏的高度是88,其中状态栏statusBar的高度是44,底部TabBar的高度是83。

    iPhoneX的底部增加了虚拟Home区,由于安全区域的原因默认tabBar的高度由49变为83,增高了34,所以自定义的底部TabBar也需要需改其适配方案。

    目前没发现有iPhone X的机型判断API,建议使用size来做代替判断。

    #define kStatusBarHeight [[UIApplication sharedApplication] statusBarFrame].size.height

    #define kNavBarHeight 44.0

    #define kTabBarHeight kStatusBarHeight>20?83:49)

    #define kTopHeight (kStatusBarHeight + kNavBarHeight)

    #define isiPhone (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)

    #define iPhoneX [[UIScreen mainScreen] bounds].size.width >= 375.0f && [[UIScreen mainScreen] bounds].size.height >= 812.0f && isiPhone

    6、安全区域

    iOS 11之前, automaticallyAdjustsScrollViewInsets经常被设置成NO,由开发者去控制处理留白和坐标问题, 但是iOS 11+ automaticallyAdjustsScrollViewInsets = NO这句代码失效。

    iOS 11后,把这个automaticallyAdjustsScrollViewInsets废弃,新增了contentInsetAdjustmentBehavior,这个属性是个枚举类型值,我们只需要把其设置成never就行了

    解决TableView偏移88的问题:

    if (@available(iOS 11.0, *)) {

    self.tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever;

    } else {

    self.automaticallyAdjustsScrollViewInsets = NO;

    }

    相关文章

      网友评论

          本文标题:iOS11以及iPhone X 总结

          本文链接:https://www.haomeiwen.com/subject/bcadzxtx.html