Safe Area Layout Guide before iOS 9.0
用Xcode 9 创建storyboard或者xib时,最低版本支持iOS 8时会报: Safe Area Layout Guide before iOS 9.0 如图:
原因:在iOS7中引入的Top Layout Guide和Bottom Layout Guide,这些布局指南在iOS 11中被弃用,取而代之的是Safe Area Layout Guide.
解决办法:适配最低支持版本iOS 8,将图中的 Use Safe Area Layout Guide 取消即可
UITableView、UIScrollView、UICollectionView位置偏移
UITableview、UIScrollView、UICollectionView莫名奇妙的偏移20pt或者64pt, 原因是iOS11弃用了automaticallyAdjustsScrollViewInsets属性,取而代之的是UIScrollView新增了contentInsetAdjustmentBehavior属性
解决办法:
第一种
if (@available(iOS 11.0, *)) {
self.tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever;
}
else {
self.automaticallyAdjustsScrollViewInsets = NO;
}
第二种
在AppDelegate的didFinishLaunchingWithOptions方法中添加
if(@available(iOS11.0, *)){ [[UIScrollViewappearance]setContentInsetAdjustmentBehavior:UIScrollViewContentInsetAdjustmentNever]; }
iOS 11中如果不实现-tableView: viewForFooterInSection:和 -tableView: viewForHeaderInSection:,那么-tableView: heightForHeaderInSection:和- tableView: heightForFooterInSection:不会被调用。
这是因为estimatedSectionHeaderHeight,estimatedSectionFooterHeight高度估算属性由默认的0变成了UITableViewAutomaticDimension,导致高度计算不对,解决方法是实现对应方法或把这两个属性设为0。
iPhone X启动图没有充满屏幕
如果你的APP在iPhoneX上运行发现没有充满屏幕,上下有黑色区域,那么你应该也像我一样LaunchImage没有用storyboard而是用的Assets,解决办法如图,启动图的尺寸为1125x2436
添加1024尺寸的icon图
关于滑动手势方法
在iOS8中滑动删除方法如下
- (nullableNSArray<UITableViewRowAction*> *)tableView:(UITableView*)tableView editActionsForRowAtIndexPath:(NSIndexPath*)indexPathNS_AVAILABLE_IOS(8_0)__TVOS_PROHIBITED;
在iOS 11中替换editActionsForRowAtIndexPath方法为如下方法
- (nullableUISwipeActionsConfiguration*)tableView:(UITableView*)tableView leadingSwipeActionsConfigurationForRowAtIndexPath:(NSIndexPath*)indexPathAPI_AVAILABLE(ios(11.0))API_UNAVAILABLE(tvos);
- (nullableUISwipeActionsConfiguration*)tableView:(UITableView*)tableView trailingSwipeActionsConfigurationForRowAtIndexPath:(NSIndexPath*)indexPathAPI_AVAILABLE(ios(11.0))API_UNAVAILABLE(tvos);
根据系统版本使用相应的方法
一些常用的宏定义
#define kStatusBarHeight [[UIApplication sharedApplication] statusBarFrame].size.height
#define kTopHeight44.0
#define kNavigationBarHeight (kStatusBarHeight + kTopHeight)
#define kTabBarHeight ([[UIApplication sharedApplication] statusBarFrame].size.height>20?83:49)
#define IS_IPHONEX ([[UIScreen mainScreen] bounds].size.height == 812 || [[UIScreen mainScreen] bounds].size.height == 896)