IOS开发入门之iOS11系统下iPhone X、Xcode9的适配教程
凌雪 2018-10-23 来源 :网络 阅读 922 评论 0

摘要:本文将带你了解IOS开发入门iOS11系统下iPhone X、Xcode9的适配教程,希望本文对大家学IOS有所帮助。

本文将带你了解IOS开发入门iOS11系统下iPhone X、Xcode9的适配教程,希望本文对大家学IOS有所帮助。


         

一、单纯升级iOS11后造成的变化

1.   升级后,发现某个拥有tableView的界面错乱,组间距和contentInset错乱,因为iOS11中 UIViewController 的   automaticallyAdjustsScrollViewInsets 属性被废弃了,因此当tableView超出安全区域时,系统自动会调整SafeAreaInsets值,进而影响adjustedContentInset值



   

// 有些界面以下使用代理方法来设置,发现并没有生效

- (CGFloat)tableView:(UITableView *)tableView   heightForHeaderInSection:(NSInteger)section;

- (CGFloat)tableView:(UITableView *)tableView   heightForFooterInSection:(NSInteger)section;

//   这样的原理是因为之前只是实现了高度的代理方法,却没有实现View的代理方法,iOS10及以前这么写是没问题的,iOS11开启了行高估算机制引起的bug,因此有以下几种解决方法:

// 解决方法一:添加实现View的代理方法,只有实现下面两个方法,方法 (CGFloat)tableView:   heightForFooterInSection: 才会生效

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

    return nil;

}

- (UIView   *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section   {

    return nil;

}

//   解决方法二:直接使用tableView属性进行设置,修复该UI错乱

self.tableView.sectionHeaderHeight = 0;

self.tableView.sectionFooterHeight = 5;

[_optionTableView   setContentInset:UIEdgeInsetsMake(-35,   0, 0,   0)];

// 解决方法三:添加以下代码关闭估算行高

self.tableView.estimatedRowHeight = 0;

self.tableView.estimatedSectionHeaderHeight   = 0;

self.tableView.estimatedSectionFooterHeight =   0;

   

2.   如果使用了Masonry 进行布局,就要适配safeArea


   

([UIDevice currentDevice].systemVersion.floatValue >=   11.0)   {

    make.edges.equalTo(self.view.safeAreaInsets);

} else {

    make.edges.equalTo(self.view);

}

   

iOS   11适配之跳转App Store评论
在iOS 11之前,为了让用户直接跳到App   Store的评论页面,你的代码大概是这样写的:


   

-(void)goToAppStore

 

{

 

NSString   *itunesurl = @"https://itunes.apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?id=XXXXXXXX&pageNumber=0&sortOrdering=2&type=Purple+Software&mt=8";

 

[[UIApplication sharedApplication] openURL:[NSURL   URLWithString:itunesurl]];

 

}

   

但是今天QA给我提了个bug,说是这个已经在iOS   11上不灵了,直接提示“无法连接App   Store”!

我试了一下,果然如此,顺便看了一下其他家的APP,不少大厂的APP也掉进了这个坑里还没爬出来,比如饿了么,百度外卖等。经过搜索引擎的帮助,我找到了如下办法:


-(void)goToAppStore

 

{

 

NSString   *itunesurl = @"itms-apps://itunes.apple.com/cn/app/idXXXXXX?mt=8&action=write-review";

 

[[UIApplication sharedApplication] openURL:[NSURL   URLWithString:itunesurl]];

 

}

   

注意:把里面的XXX替换成你自己的APP   ID。

    

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标移动开发之IOS频道!

本文由 @凌雪 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程