如今苹果手机自从出了iPhoneX 齐刘海之后,适配也是坑坏了各位开发的小伙伴。
一般的话就是直接定义几个宏,然后判断是不是iPhone X系列的手机
#define kStatusBarHeight [UIApplication sharedApplication].statusBarFrame.size.height
#define SafeAreaTopHeight ([UIApplication sharedApplication].statusBarFrame.size.height+44)
#define SafeAreaBottomHeight (kScreenHeight >=812.0?83:49)
你定义之后本以为会大功告成,可是你错了,你会发现在你点击push操作的时候tabbar会莫名其妙的上移,这就难受了。后面发现原来是在push操作的时候tabbar的frame会发生改变,故而我们需要强制UINavigationController里面在它push操作的时候改tabbar的frame:
本以为这样也是完美了,可是还有一种情况更是奇怪,在我们自动计算cell高度的时候,你会惊奇的发现tableView会跳动,开始我以为是没有设置self.automaticallyAdjustsScrollViewInsets属性的原因:
设置完以后我以为好了,可是发现iOS11情况下还是错了,原来是因为cell自动计算高度引起的问题,最后的最后我在tableView初始化的时候加上了
//添加这三行代码是在ios11的情况下防止tableView跳动
_tableView.estimatedRowHeight = 0;
_tableView.estimatedSectionHeaderHeight = 0;
_tableView.estimatedSectionFooterHeight = 0;
历经千辛万苦,最后可算是完成了这个的适配。以供开发小伙伴借鉴一下。如有不当之处,请各位指出!!
补充(如果实现了返回行高的代理方法的话,那么写_tableView.estimatedRowHeight = 0,反之就需要写一个较大的值_tableView.estimatedRowHeight = 较大的值,以免刷新的时候跳动)