随着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
只需要设置一下就可以了
新增AR开发
image.pngxcode 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 传送门
欢迎指正错误或者提出意见建议!
网友评论