关于iPhone X系列push操作后tabbar上移,或者高度83变成49

如今苹果手机自从出了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 = 较大的值,以免刷新的时候跳动)

你可能感兴趣的:(关于iPhone X系列push操作后tabbar上移,或者高度83变成49)