ios开发 如何修改正确tabBar的高度?

最近项目里面需要自定义tabbar,需要定义成这样


image.png

说说实现方法吧:
1、自定义一个view【继承自UIView】,高度与系统的高度一致(tabbar系统默认是49)
我是直接将自定义的tabbar添加到系统的tabbar,但是这么做的话,中间按钮凸出来的部分始终无法响应事件,即使实现了hitTest方法。
2、于是就想到了直接修改系统的tabbar的高度,然后自定义tabbar的高度还是默认为49,让中间按钮完全在父视图内,这样的话,中间按钮的事件响应就没有问题了。

具体怎么做的呢?
A、创建一个继承UITabBar的文件

/** 增加TabBar的高度 30 */
staic CGFloat  increaseTabBarHeight = 30;

-(instancetype)initWithFrame:(CGRect)frame{
  if (self = [super initWithFrame:frame]) {
      self.backgroundColor = [UIColor clearColor];
  }
  return self;
}

//设置TabBar的子视图颜色
-(void)layoutSubviews{
  
  for (UIView *view in self.subviews) {
      view.backgroundColor = [UIColor clearColor];
  }
}

//调整高度的核心方法
-(CGSize)sizeThatFits:(CGSize)size{
  
  CGSize sizeThatFits = [super sizeThatFits:size];
  
  NSLog(@"添加前tabbar= %f",sizeThatFits.height);
  
  //根据你的设计稿的需要,可以写成固定的值,我下面的写法是考虑到所有机型都在默认的高度上增加15
  sizeThatFits.height= sizeThatFits.height+increaseTabBarHeight;

  NSLog(@"添加后tabbar= %f",sizeThatFits.height);
  
  return sizeThatFits;
  
}

B:来到UITabBarController,同时遇到导入#import <objc/runtime.h>
在viewDidLoad方法里面实现一下

   //使用运行时替换系统的
   object_setClass(self.tabBar, [ZYCustomTabBar class]);    

   //去掉原生tabbar分割线
   [self.tabBar setShadowImage:[UIImage new]];
   [self.tabBar setBackgroundImage:[UIImage new]];

   //添加自定义customTabBar到系统tabBar上面
   [self.tabBar addSubview:self.customTabBar];

C:到此就已经实现了调整tabBar

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

推荐阅读更多精彩内容

  • 之前在做直播的时候,参照了映客App,发现其首页的效果还挺不错,在网上找了一下相关仿映客App代码和博客,大部分都...
    HK_Hank阅读 9,333评论 17 114
  • 今天,像往常一样在节日里齐聚在老家,亲朋好友,好不热闹。 因为他们的到来,我们作为东道主忙的不可开交。吃饭的时候爸...
    不知春阿阅读 334评论 0 2
  • 5月6日,假期结束,一切归于平静,房间又留了我一个人,而我也又一次失眠睡不着哭泣的时候,我突然意识到我可能心理出现...
    Cynthia_3600阅读 237评论 0 0
  • 菲尔普斯自由泳侧身打腿:腿不要沉下去。要点:关键在于头尖要沉入水中,嘴位于最高位,以利于呼吸。腿就自然地抬起来了。...
    试遣愚衷阅读 189评论 0 1
  • 人生重要的一课---成为真正的父母。感恩孩子赐予我第二次成长的机会,我愿潜心修行,成为你们心中的“佛”…… 现如今...
    星亮晨雨阅读 1,028评论 0 1