iOS更改tabbar高度、分割線高度和顏色以及圖標(biāo)文字間距

? ? ? ? ?一般做app開發(fā),如果沒有什么特殊設(shè)計的話,系統(tǒng)自帶的tabbar足夠使用了,但是偏偏有些設(shè)計妹子就是要做一下特殊的設(shè)計,例如tabbar的高度比默認(rèn)的要高,分割線顏色很個性,既然tabbar的高度變了,圖標(biāo)和文字之間的間距自然而然也和系統(tǒng)的設(shè)計的不一樣了,這就需要開發(fā)幾乎是自定義一個tabbar了。

一、更改tabbar的高度

? ? ? ? 當(dāng)你在某度上搜索更改tabbar的高度,一般有兩種方法,但是本人嘗試了兩種方法都不湊效,我先把兩種代碼粘出來,然后提供我工程中的代碼。

方法一:寫在- (void)viewWillLayoutSubviews中

1.繼承UITabBarController

@interfaceALTabBarController :UITabBarController

2.重寫UITabBarController的UITabBarController方法

- (void)viewWillLayoutSubviews{

CGRect tabFrame =self.tabBar.frame;

?tabFrame.size.height =80;? ??

tabFrame.origin.y =self.view.frame.size.height -80;

self.tabBar.frame = tabFrame;

}

方法二:寫在- (void)viewDidLayoutSubviews中

在UITabBarController.m 附上如下代碼即可修改系統(tǒng)tabBar的高度。

- (void)viewDidLayoutSubviews {

? ? [super viewDidLayoutSubviews];

? ? CGRect frame = self.tabBar.frame;

? ? frame.size.height = 65;

? ? frame.origin.y = self.view.frame.size.height - frame.size.height;

? ? self.tabBar.frame = frame;

? ? self.tabBar.backgroundColor =?[UIColor blackColor];

? ? self.tabBar.barStyle = UIBarStyleBlack;

}

? ? ? ? 其實前兩種方法是同一種方法,代碼寫的位置不同而已,本人嘗試后并無效果,并不能改變系統(tǒng)默認(rèn)的tabbar的高度。下面方法三是我自己項目中的方法。

方法三:

第一步:自定義一個tabbar,繼承自UITabbar

@interfaceMyTabBar :UITabBar

@end

@implementation MyTabBar

-(CGSize)sizeThatFits:(CGSize)size{

? ? CGSizesizeThatFits = [supersizeThatFits:size];

? ? NSLog(@"tabbar= %f",sizeThatFits.height);

//根據(jù)你的設(shè)計稿的需要,可以寫成固定的值,我下面的寫法是考慮到所有機型都在默認(rèn)的高度上增加15

? ? sizeThatFits.height= sizeThatFits.height+15;

? ? returnsizeThatFits;

}

@end

第二步:tabBar初始化的時候設(shè)置為自定義的UITabbar

object_setClass(self.tabBar, [MyTabBar class]);//一般將這句代碼寫在你重載UITabBarController 的 viewDidLoad里面,執(zhí)行一遍就可以。

至此,修改tabbar的高度就實現(xiàn)了。

二、修改tabbar分割線高度和顏色

在你重載的UITabBarController 的 viewDidLoad方法里面添加如下代碼:

?//修改tabbar分割線高度

? ? CGRectrect =CGRectMake(0,0,kMainScreen_Width,1);

? ? UIGraphicsBeginImageContext(rect.size);

? ? CGContextRef context = UIGraphicsGetCurrentContext();

?//修改tabbar分割線的顏色

? ? CGContextSetFillColorWithColor(context, UIColorFromRGB(0xe6e6e6).CGColor);

? ? CGContextFillRect(context, rect);

? ? UIImage *img = UIGraphicsGetImageFromCurrentImageContext();

? ? UIGraphicsEndImageContext();

? ? //設(shè)置tabbar的shadowImage和BackgroundImage,缺一不可,否則將無法改變分割線顏色

? ? self.tabBar.shadowImage = img;

? ? [self.tabBar setBackgroundImage:[[UIImage alloc]init]];

三、修改tabbar圖標(biāo)文字間距

在你重載的UITabBarController 的 viewDidLayoutSubviews方法里面添加如下代碼:

-(void)viewDidLayoutSubviews{

? ? [super viewDidLayoutSubviews];

? ? for (UITabBarItem * item in self.tabBar.items) {

//根據(jù)需要調(diào)整水平和垂直的距離

? ? ? ? item.titlePositionAdjustment = UIOffsetMake(0, -7);

//? ? ? ? {top, left, bottom, right}根據(jù)需要調(diào)整上下左右距離

? ? ? ? item.imageInsets = UIEdgeInsetsMake(-4, 0, 1, 0);

? ? }

? ? NSLog(@"===%lf, %lf, %lf, %lf,", self.tabBar.frame.origin.x, self.tabBar.frame.origin.y, self.tabBar.frame.size.width, self.tabBar.frame.size.height);

}

有關(guān)tabbar的相關(guān)問題,歡迎大家來討論,關(guān)于修改tabbar高度的前兩個方法,如果有人嘗試成功的話,也煩請留言~~

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容