iPhone XS Max的tabbar显示混乱解决方法

iPhoneX的适配没问题  但是xs max显示tabbar就混乱,如图:

原因就是tabbar高度获取都是49  但是系统给留了34的高度放在最下面不让你用,用来显示你的tabbar的高度就剩下了49-34=15了。所以都挤在一起特别混乱,解决办法就是在xsmax的机型上人为改动tabbar的高度即可。

我的baseviewcontroller是basetabbarcontroller。所以在tabbarcontroller的.m里加上这个方法:

//记得引入头文件,用来判断手机型号的
#import <sys/sysctl.h>
#import <sys/utsname.h>


- (void)viewWillLayoutSubviews {
    if (!self.tabBarHeight) {
        return;
    }
//模拟器的获取设备号的方法
    NSString *model = NSProcessInfo.processInfo.environment[@"SIMULATOR_MODEL_IDENTIFIER"];
    if ([[self machineName1] isEqualToString:@"iPhone11,4"] || [[self machineName1] isEqualToString:@"iPhone11,6"] || [model isEqualToString:@"iPhone11,4"] || [model isEqualToString:@"iPhone11,6"]) {
        self.tabBarHeight = 83;
    }
//因为xsmax在哪个方法里获取都是49 所以我们要人为改变高度变为83;其他机型暂时不用处理,获取的都是正确的高度
    self.tabBar.frame = ({
        CGRect frame = self.tabBar.frame;
        CGFloat tabBarHeight = self.tabBarHeight;
        frame.size.height = tabBarHeight;
        frame.origin.y = self.view.frame.size.height - tabBarHeight;
        frame;
    });
}

// 获取 device model/machine name 的方法一
-(NSString *)machineName1 {
    size_t size;
    sysctlbyname("hw.machine", NULL, &size, NULL, 0);
    char *machine = (char *)malloc(size);
    if (machine == NULL) {
        return nil;
    }
    sysctlbyname("hw.machine", machine, &size, NULL, 0);
    NSString *platform = [NSString stringWithCString:machine encoding:NSUTF8StringEncoding];
    free(machine);
    return platform;
}

其他文章请查看个人博客:http://zhangqq166.cn/

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值