Xcode Release版本出来了,iPhone的适配也在悄然进行中。此篇文章就此针对iPhone X的UITabBar
做适配。
UITabBar 偏移问题
当在push到下一界面时,并设置hidesBottomBarWhenPushed
为YES
将会出现Figure-1
的情况 -- UITabBar
向上偏移34pt
即蓝色区域。下面提供一个safeAreaInsets
变化的过程:
deltaVaue = 83 - 49 = 34
2017-09-21 15:32:50.063642+0800 ios11NavBar[3698:126162] viewSafeAreaInsetsDidChange:{44, 0, 83, 0}
2017-09-21 15:32:50.070815+0800 ios11NavBar[3698:126162] DidLayout-containerView: {{0, 0}, {375, 812}}
2017-09-21 15:32:56.447208+0800 ios11NavBar[3698:126162] viewSafeAreaInsetsDidChange:{44, 0, 49, 0}
2017-09-21 15:32:56.447649+0800 ios11NavBar[3698:126162] DidLayout-containerView: {{0, 0}, {375, 778}}
2017-09-21 15:32:56.448666+0800 ios11NavBar[3698:126162] viewSafeAreaInsetsDidChange:{44, 0, 83, 0}
2017-09-21 15:32:56.448890+0800 ios11NavBar[3698:126162] DidLayout-containerView: {{0, 0}, {375, 812}}
Figure-1
解决方案
继承UITabBarController
,修改UITabBar
的Y
坐标值。不是最优方案,如果有较好的方案希望大家能不啬指点一二。
- (void)viewDidLayoutSubviews {
[super viewDidLayoutSubviews];
//TODO: adapt tabbar's y value.
if ([RTDeviceHardware iPhoneXDevice]) {
CGFloat deltaTabBarY = SCREEN_HEIGHT - CGRectGetHeight(self.tabBar.frame);
self.tabBar.frame = (CGRect){0, deltaTabBarY, self.tabBar.bounds.size};
}
}
最终效果如图
Figure-2UITableView 刷新后偏移问题
在iOS11上,设置UITableView
的style
为UITableViewStyleGrouped
时,并且行高大于220(囧 项目中有类似问题,又经过反复验证我就大胆预估了一个值,220就由此得来),当push再pop回来刷新列表 就会导致列表偏移,并没有停留在之前的位置。
解决方案
//TODO: iOS 11之后,预估值有默认高度,如果不需要就设置0
_tableView.estimatedRowHeight = 0;//这里需要吐槽下,如果不设置为0 就会出现刷新后偏移问题。
_tableView.estimatedSectionHeaderHeight = 0;
_tableView.estimatedSectionFooterHeight = 0;
网友评论