UITabBarController底層實現(xiàn)

思路

1.搭建界面,添加兩個UIView(一個是TabBar條,子控制器顯示的View)

2.添加子控制器

3.添加按鈕(tabbar上有多少個按鈕,有子控制器決定)

一.添加子控制器

UIViewController *vc = [[UIViewController alloc]init];

vc.title = @"嘻嘻";

vc.view.backgroundColor = [UIColor orangeColor];

[self addChildViewController:vc];

二.添加按鈕

設置控制器的個數(shù)

NSInteger count = self.childViewControllers.count;

設置按鈕的位置

CGFloat screenW = [UIScreen mainScreen].bounds.size.width;//屏幕的寬度

CGFloat btnW = screenW / count;

CGFloat btnH = self.tabBar.bounds.size.height;

CGFloat btnX = 0;

CGFloat btnY = 0;

添加按鈕的和屬性

for (int i = 0; i < count ?; i++){

UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];

btn.tag ?= i;

[btn ?setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];

[btn setTitleColor:[UIColor redColor] forState:UIControlStateSelected];

UIViewController *vc = self.childViewControllers[i];

[btn setTitle:vc.title forState:UIControlStateNormal];

btnX = i * btnW;

btn.frame = CGRectMake(btnX, btnY, btnW, banh);

[self.tabBar addSubview:btn];

//監(jiān)聽按鈕點擊

[btn addTarget:self action:@selector(btnClick:) forControlEvents:UIControlEventTouchUpInside];

if (i == 0) {

[self btnClick:btn];

}

}

監(jiān)聽按鈕點擊

- (void)btnClick:(UIButton *)button

{

NSInteger i = button.tag;

_selectedButton.selected = NO;


button.selected = YES;

_selectedButton = button;

//點擊按鈕移除之前的的控制器,添加按鈕對應的控制器

//獲取子控制器

UIViewController *vc = self.childViewControllers[i];

//移除之前的控制器

[self.containerView.subviews makeObjectsPerformSelector:@selector(removeFromSuperview)];

//添加當前控制器

[self.containerView addSubview:vc.view];

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

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

  • 1.首先要了解:任何控制器,都能添加子控制器 2.UITabBarController內(nèi)部結(jié)構(gòu)和管理原則 2.1 ...
    尕小天閱讀 681評論 4 1
  • *7月8日上午 N:Block :跟一個函數(shù)塊差不多,會對里面所有的內(nèi)容的引用計數(shù)+1,想要解決就用__block...
    炙冰閱讀 2,727評論 1 14
  • 代碼創(chuàng)建UIWindow對象 Xcode7之后使用代碼創(chuàng)建UIWindow對象: //創(chuàng)建UIWindow對象 s...
    云之君兮鵬閱讀 1,494評論 0 2
  • 1.思路 最近項目中需要在tabbar中間做一個突出按鈕,查了很多資料也沒看到,于是按照自己的想法寫了個,基...
    程序媛妹妹閱讀 1,462評論 0 1
  • 說到綠規(guī),每個人都會擺出一副“我怎麼了?”的表情。 很希望快點結(jié)束這門,現(xiàn)在都不要優(yōu)秀良好,衹要及格,趕緊結(jié)束我就...
    前朝舊妃若兮悲閱讀 402評論 0 0

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