修复iPhone X设备tabBar高度乱跳的问题

如图所示

如果控制器的hidesBottomBarWhenPushed属性设为true,进行push操作之后会出现tabBar高度错乱的现象,先变矮一截,然后返回的时候又弹回到正常高度,非常影响使用感受,这应该属于iOS 11在iPhone X设备下自身的bug。

解决一:
KVO监听tabBar的frame,当frame改变时,我们取一个高度最大的值重新布局tabBar就行了,

OC:

[self.tabBar addObserver:self forKeyPath:@"frame" options:NSKeyValueObservingOptionOld|NSKeyValueObservingOptionNew context:nil];

-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary<NSKeyValueChangeKey,id> *)change context:(void *)context{
    
    NSLog(@"KVO---%@----%@",change[@"old"],change[@"new"]);
    
    CGRect oldFrame = [change[@"old"] CGRectValue];
    CGRect newFrame = [change[@"new"] CGRectValue];
    
    if (oldFrame.size.height!= newFrame.size.height) {
        if (oldFrame.size.height>newFrame.size.height) {
            self.tabBar.frame=oldFrame;
        }else{
            self.tabBar.frame=newFrame;
        }
    }
}

解决二:

viewWillAppear中强制给 fram 赋值,kBottomSafeHeight判断是否 X 以上手机的34高度,这个方法没有上个好。

    CGRect frame = self.tabBarController.tabBar.frame;
    if (kBottomSafeHeight == 34.0) {
        frame.size = CGSizeMake(frame.size.width,83);
    }
    self.tabBarController.tabBar.frame = frame;

解决三:

loading...

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容