iOS11 Xcode9 更新适配

随着iPhone 8和iPhone X 以及iOS 11 的发布更新,更新适配的工作又开始了😶

首先更新到了Xcode 9 ,具体暂时发现了以下新功能

无线调试

😆 😆 看见旁边的安卓调试还在用数据线连接顿时感觉高大上有没有!!
想使用无线调试的首要条件是更新到Xcode 9 和 iOS 11
然后按图所示打开


image.png

勾选上Connect via network


image.png

当左边有小地球的时候表示已经连接
然后可以拔掉数据线,开始装13之旅!

⚠️ ⚠️ 如果有报错,请先将手机设置密码,然后连接上在取消就好了,具体的报错内容忘记保存了😂 😂

多个模拟器调试

Xcdoe 9可以允许多个模拟器同时运行调试
然后就可以左手一个iPhone 8 右手一个iPhone X

快捷键更改

以前快速进入方法command+鼠标单击
现在会弹出一个菜单有不同的操作

image.png

如果想变回以前的操作


image.png

只需要设置一下就可以了

新增AR开发

image.png

xcode 9手动带入第三方遇见的坑

由于项目没有使用pod,最近发现有第三方更新,于是手动导入了一下,结果一直报错,后来发现是Build Phases --->Compile Sources 里面.m文件没有自动导入。。
Xcode 9 的其他的暂时没有什么新发现,欢迎大家补充!!!

下面介绍iOS 11 适配(不包括iPhone X)

searchBar 变高

以前使用self.navigationItem.titleView = searchBar; 的小伙伴会发现titleView 高度变高

image.png

我使用的解决方法是

UIView *container = [[UIView alloc] initWithFrame:CGRectMake(0, 0, SCREEN_WIDTH - 80, 44)];
//    container.backgroundColor = [UIColor redColor];
mySearchBar.translatesAutoresizingMaskIntoConstraints = NO;
[container addSubview:mySearchBar];
//    self.navigationItem.titleView = container; 
self.navigationItem.titleView = mySearchBar; 
//    设成container会导致searchBar无响应事件,暂时还不清楚问题原因,
[mySearchBar mas_makeConstraints:^(MASConstraintMaker *make) {
    make.width.equalTo(SCREEN_WIDTH - 100);
    make.height.equalTo(34);
    make.centerX.equalTo(container);
    make.centerY.equalTo(container);
}];

或者 使用 Navigation 集成的 UISearchController

 self.navigationItem.searchController = mySearchController;

大标题的显示

在UI NavigationBar中,新增了一个属性prefersLargeTitles,将该属性设置为ture,NavigationBar会显示大标题.

navigationController?.navigationBar.prefersLargeTitles = true

Tableview Footer Header View

iOS 11 中发现之前设定的footerView 或者headerView 高度都变了。
解决方法:
如果调用了:

#pragma mark tableview delegate
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section {
    return 10;
}

- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section {
    return 10;
}

方法必须实现:

- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section {
    return nil;
}

-(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {
    return nil;
}

或者

estimaterRowHeight = 0;
estimaterSectionHeaderHeight = 0;
estimaterSectionFooterHeight = 0;

这是因为

estimaterRowHeight
estimaterSectionHeaderHeight
estimaterSectionFooterHeight

高度估算属性由默认0变成

UITableViewAutomaticDimension

所致

iOS 11 导致的定位失败问题

因为苹果现在增加了一项新的隐私保护功能

NSLocationAlwaysAndWhenInUseUsageDeion

并且原有的

NSLocationAlwaysUsageDeion

被降级为

NSLocationWhenInUseUsageDeion。

想要达到之前

NSLocationAlwaysUsageDeion 

的定位效果,需要在info.plist文件中添加

NSLocationAlwaysAndWhenInUseUsageDeion 和 NSLocationWhenInUseUsageDeion

两个就可以了

iPhone X 适配注意事项

1.隐藏导航栏的界面特别要注意,因为“耳朵”和 Safe Area 的原因,很有可能上面会露出小片空白。
2.列表页如果没有 tabBar,而且列表页可以拉到最底下,请在列表页最后留一点空白给手势区域。
3.列表页使用系统的 tabBar 那是完全自动适配的,但如果是自定义的 tabBar,请适当在 tabBar 底下留出空白给手势区域。

暂时就发现这些问题,有兴趣的朋友建议大家去看看WWDC 传送门
欢迎指正错误或者提出意见建议!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,229评论 4 61
  • 两手空空的回来 满满当当的回去 饶是如此 爸妈竟也不会觉得你虽然一无所有但还有脸回来 并不是爱吃苹果的你 随口提了...
    羊羊羊大宝阅读 248评论 0 0
  • 文/刘黎燕 二十五岁前靠的是父母 三十岁前可以靠朋友 三十五岁后要靠自已 95后的小鲜肉...
    黎明时分的燕子阅读 401评论 0 4
  • 第一章 啪,快,快去
    浅姗阅读 135评论 0 0
  • 之前,有段时间特迷恋钓鱼,无论鱼竿儿还是鱼食,还有炮台,还有钓箱,太阳伞,遮阳帽,帐篷,帐篷灯,头灯,鱼线……一并...
    烦人的昵称阅读 216评论 0 0