iOS开发

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

2020-01-02  本文已影响0人  博览己用1789

最近项目里面需要自定义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

上一篇下一篇

猜你喜欢

热点阅读