最近項(xiàng)目里面需要自定義tabbar油狂,需要定義成這樣
image.png
說說實(shí)現(xiàn)方法吧:
1赶盔、自定義一個(gè)view【繼承自UIView】企锌,高度與系統(tǒng)的高度一致(tabbar系統(tǒng)默認(rèn)是49)
我是直接將自定義的tabbar添加到系統(tǒng)的tabbar,但是這么做的話,中間按鈕凸出來(lái)的部分始終無(wú)法響應(yīng)事件招刨,即使實(shí)現(xiàn)了hitTest方法霎俩。
2、于是就想到了直接修改系統(tǒng)的tabbar的高度沉眶,然后自定義tabbar的高度還是默認(rèn)為49打却,讓中間按鈕完全在父視圖內(nèi),這樣的話谎倔,中間按鈕的事件響應(yīng)就沒有問題了柳击。
具體怎么做的呢?
A片习、創(chuàng)建一個(gè)繼承UITabBar的文件
/** 增加TabBar的高度 30 */
staic CGFloat increaseTabBarHeight = 30;
-(instancetype)initWithFrame:(CGRect)frame{
if (self = [super initWithFrame:frame]) {
self.backgroundColor = [UIColor clearColor];
}
return self;
}
//設(shè)置TabBar的子視圖顏色
-(void)layoutSubviews{
for (UIView *view in self.subviews) {
view.backgroundColor = [UIColor clearColor];
}
}
//調(diào)整高度的核心方法
-(CGSize)sizeThatFits:(CGSize)size{
CGSize sizeThatFits = [super sizeThatFits:size];
NSLog(@"添加前tabbar= %f",sizeThatFits.height);
//根據(jù)你的設(shè)計(jì)稿的需要捌肴,可以寫成固定的值,我下面的寫法是考慮到所有機(jī)型都在默認(rèn)的高度上增加15
sizeThatFits.height= sizeThatFits.height+increaseTabBarHeight;
NSLog(@"添加后tabbar= %f",sizeThatFits.height);
return sizeThatFits;
}
B:來(lái)到UITabBarController藕咏,同時(shí)遇到導(dǎo)入#import <objc/runtime.h>
在viewDidLoad方法里面實(shí)現(xiàn)一下
//使用運(yùn)行時(shí)替換系統(tǒng)的
object_setClass(self.tabBar, [ZYCustomTabBar class]);
//去掉原生tabbar分割線
[self.tabBar setShadowImage:[UIImage new]];
[self.tabBar setBackgroundImage:[UIImage new]];
//添加自定義customTabBar到系統(tǒng)tabBar上面
[self.tabBar addSubview:self.customTabBar];
C:到此就已經(jīng)實(shí)現(xiàn)了調(diào)整tabBar