iOS 11 适配笔记

一、定位权限:

无论是iOS11还是之前的系统版本,定位权限总共就三种:“永不”、“使用应用期间”、“始终”
之前的iOS 10的定位权限是

Privacy - Location Always Usage Description //始终
Privacy - Location Usage Description    //允许定位
Privacy - Location When In Use Usage Description    //使用应用期间

iOS11后增加了一种定位权限,而且要求必须使用此权限才能使用定位服务

Privacy - Location Always and When In Use Usage Description

当大家升级到Xcode9后,会发现设置的iOS10之前的定位权限,在iOS11的项目上无法使用定位服务了,
为了适配iOS11的定位权限,大家只需在工程的info.plist文件里添加以下权限key value就行了

Privacy - Location When In Use Usage Description
Privacy - Location Always and When In Use Usage Description

iOS10的定位权限
这里写图片描述
iOS11的定位权限
这里写图片描述

二、跳转到App Store:

一般我们的app跳转到app store里需求无外乎两种:一种是引导用户下载某个app;一种是引导用户对某个app做评价。
iOS11的App Store进行了大改版,之前的跳转到App Store里引导用户对app做评价的页面在iOS10里是一个单独的页面,我们也可一跳转到这个评价页面,但是iOS11的评价是在app详情的首页的,所以导致之前到跳转到app评价页面的URL在iOS11里就不管用了。
解决办法是做个判断,iOS10之前的系统版本都跳转到app评价页面,iOS11跳转到app详情页面。
跳转到app store里某个app对应的详情页面的URL有如下两种:

[NSString stringWithFormat:@"https://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=%@&mt=8", kAppId]

[NSString stringWithFormat:@"itms-apps://itunes.apple.com/app/id%@", kAppId]

iOS10之前跳转到app store里某个app对应的评价页面的URL如下:

[NSString stringWithFormat:@"itms-apps://itunes.apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?type=Purple+Software&id=%@&pageNumber=0&sortOrdering=2&mt=8", kAppId]

所以iOS11之后跳转到App Store里对app评价,可以写成如下宏定义:

///app store 评论URL
#define kAppStoreComment    ( (IOSVersion<=10)?[NSString stringWithFormat:@"itms-apps://itunes.apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?type=Purple+Software&id=%@&pageNumber=0&sortOrdering=2&mt=8", kAppId] : [NSString stringWithFormat:@"itms-apps://itunes.apple.com/app/id%@", kAppId])

其中 IOSVersion 是个宏定义

//系统版本号
#define IOSVersion          [[[UIDevice currentDevice] systemVersion] floatValue]

三、tableview的footer view问题:

在iOS10之前的系统显示页面如下:
这里写图片描述
iOS11系统上显示的页面如下:
这里写图片描述
之所以在iOS11上出现这样的显示效果是因为没有实现

- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section

这个方法。这说明了在iOS10之前的系统上可能系统默认实现了
viewForFooterInSection
方法,而iOS11系统没有默认实现,必须开发者实现,所以iOS11上一定要实现如下delegate方法:

- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section


- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值