1、UIScrollView以及子类frame整体下移问题
项目使用UIViewController的automaticallyAdjustsScrollViewInsets属性,在iOS 11中被弃用,取而代之的是UIScrollView的 contentInsetAdjustmentBehavior。
if (@available(iOS 11,*)) {
if ([tableview respondsToSelector:@selector(setContentInsetAdjustmentBehavior:)]) {
tableview.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever;
}
}
2、UITableView的SetContentSize不准问题
iOS 11中默认开启高度估算,在未实现viewForHeaderInSection时heightForHeaderInSection无法生效,
iOS 11上发生tableView顶部有留白,原因是代码中只实现了heightForHeaderInSection方法,而没有实现viewForHeaderInSection方法。那样写是不规范的,只实现高度,而没有实现view,但代码这样写在iOS 11之前是没有问题的,iOS 11之后应该是由于开启了估算行高机制引起了bug。添加上viewForHeaderInSection方法后,问题就解决了。或者添加以下代码关闭估算行高,问题也得到解决。
self.tableView.estimatedRowHeight = 0;
self.tableView.estimatedSectionHeaderHeight = 0;
self.tableView.estimatedSectionFooterHeight = 0;
3、[[UIScreen mainScreen] bounds].size不对
在运行iPhone X时,发现以前定义的屏幕size宏不对。原因在于此size取得是App启动时加载的启动图Size,只需在启动图在加入iPhone X尺寸的启动图即可,分辨率为1125*2436。
4、导航栏item错乱
UINavigationBar中又加入了新的图层UIButtonBarStackView
Xcode 9小Tips
1、导入图片若失败,手动在Build Phases --->Copy Binary With Libraies中重新添加一遍即可。
2、Xcode 9 打包时,记得在icon的添加1024*1024的图标。
3、无线调试功能,可在Window -->Devices and Simulators中勾选Connect via network那两个选项。前提是此设备已run过并处于同一局域网下。注意:只有iOS 11手机下才会出现这个勾选项。
4、在Asset中,可以创建颜色了。右键选择New image set,填充RGBA值或十六进制值即可。使用中直接使用新的colorwithname,参数填入创建时的名字即可。不过记得区分系统版本。
5、command键复原。可在Preferences --> Navigation -->Commadn-click 中选择Jumps to Defintion即可。
6、xcode 9 还允许多开模拟器。
iPhone X
1.LaunchImage
如果你的APP在iPhoneX上运行发现没有充满屏幕,上下有黑色区域,那么你应该也像我一样LaunchImage没有用storyboard而是用的Assets,解决办法如图,启动图的尺寸为1125x2436,or you can iOS开发时如何使用 Launch Screen Storyboard。
2.TabBarController
主要是tabBar高度及tabBarItem偏移适配,iPhoneX由于底部安全区的原因UITabBar高度由49pt变成了83pt,可以通过判断机型来修改相关界面代码
'#'define kDevice_Is_iPhoneX ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(1125, 2436), [[UIScreen mainScreen] currentMode].size) : NO)