【iOS開發-31】UITabBar背景、icon表徵圖顏色、被選中背景設定以及隱藏UITabBar的兩種方式

來源:互聯網
上載者:User

標籤:

一、對UITabBar背景和icon表徵圖的一些設定


(1)由於直接給UITabBar設定的背景顏色顯示的不純。半透明的感覺,所以,有時候我們能夠直接利用純色的圖片作為背景達到想要的效果。


(2)給icon圖片改變顏色也是重要的有用方法之中的一個,預設的時藍色。


在AppDelegate.m檔案裡:(1個導航控制器和5個視圖控制器)

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {    //建立5個視圖控制器和1個導航控制器    ViewController1 *vc1=[[ViewController1 alloc]init];    UINavigationController *nav1=[[UINavigationController alloc]initWithRootViewController:vc1];    ViewController2 *vc2=[[ViewController2 alloc]init];    ViewController3 *vc3=[[ViewController3 alloc]init];    ViewController4 *vc4=[[ViewController4 alloc]init];    ViewController5 *vc5=[[ViewController5 alloc]init];    ViewController *vc6=[[ViewController alloc]init];    //6個標題    [email protected]"介面1";    [email protected]"介面2";    [email protected]"介面3";    [email protected]"介面4";    [email protected]"介面5";    [email protected]"介面6";    //6個系統icon表徵圖    [nav1.tabBarItem initWithTabBarSystemItem:UITabBarSystemItemTopRated tag:1];    [vc2.tabBarItem initWithTabBarSystemItem:UITabBarSystemItemSearch tag:2];    [vc3.tabBarItem initWithTabBarSystemItem:UITabBarSystemItemContacts tag:3];    [vc4.tabBarItem initWithTabBarSystemItem:UITabBarSystemItemMostViewed tag:4];    [vc5.tabBarItem initWithTabBarSystemItem:UITabBarSystemItemMostRecent tag:5];    [vc6.tabBarItem initWithTabBarSystemItem:UITabBarSystemItemDownloads tag:6];    //建立一個視圖控制器數組,並把它賦值給標籤欄控制器的viewControllers值    NSArray *arr1=[[NSArray alloc]initWithObjects:nav1,vc2,vc3,vc4,vc5,vc6, nil];    UITabBarController *tbCon1=[[UITabBarController alloc]init];    tbCon1.viewControllers=arr1;        //標籤欄控制器有個tabBar屬性,這個屬性有兩個items和selectedItem屬性是不能用的。由於這兩個屬性是歸標籤欄控制器直接管理,其它人不能對其賦值    //執行下面兩行代碼,程式會崩潰    //tbCon1.tabBar.items=[[NSArray alloc]initWithObjects:vc1.tabBarItem, nil];    //tbCon1.tabBar.selectedItem=vc1.tabBarItem;        //通過backgroundColor能夠設定標籤欄顏色,可是是一層淡淡的紅色    tbCon1.tabBar.backgroundColor=[UIColor redColor];        //能夠通過設定背景圖片的方式給標籤欄設定背景顏色。比方紅色的背景圖片。要求圖片大小要正好    //用下面方式獲得標籤欄寬高後,建立一個背景圖片,再引入進來    NSLog(@"%i,%i",(int)tbCon1.tabBar.frame.size.height,(int)tbCon1.tabBar.frame.size.width);    tbCon1.tabBar.backgroundImage=[UIImage imageNamed:@"tabBarbg.png"];        //通過tintColor能夠給icon表徵圖設定顏色    tbCon1.tabBar.tintColor=[UIColor redColor];        //設定被選中標籤的背景圖片,寬度是375/5=77    tbCon1.tabBar.selectionIndicatorImage=[UIImage imageNamed:@"selectionDic.png"];        //把這個標籤欄控制器當做window的根視圖控制器來顯示    self.window.rootViewController=tbCon1;        // Override point for customization after application launch.    return YES;}

二、隱藏UITabBar的第一種方式


這一種方式須要用導航控制器視圖來做實驗,由於我們須要用hidesBottomBarWhenPushed屬性,這個屬性的意思是,當這個視圖被壓到棧中時(導航控制器的棧)。隱藏底部的bar。包含UITabBar。


所以我們以上面的nav1做實驗,nav1的根視圖控制器是vc1。我們在vc1中添加一個button。一點擊就到ViewController7.m中(執行個體是vc7),並隱藏UITabBar。

在vc1中:

#import "ViewController1.h"#import "ViewController7.h"@interface ViewController1 ()@end@implementation ViewController1- (void)viewDidLoad {    //    UIButton *btn1=[UIButton buttonWithType:UIButtonTypeRoundedRect];    btn1.frame=CGRectMake(38, 80, 300, 30);    btn1.backgroundColor=[UIColor whiteColor];    [btn1 setTitle:@"PUSH" forState:UIControlStateNormal];    [btn1 addTarget:self action:@selector(jumpTo) forControlEvents:UIControlEventTouchUpInside];    [self.view addSubview:btn1];            [super viewDidLoad];    // Do any additional setup after loading the view.}-(void)jumpTo{    ViewController7 *vc7=[[ViewController7 alloc]init];    [self.navigationController pushViewController:vc7 animated:NO];}@end

在ViewController7.m中:

#import "ViewController7.h"@interface ViewController7 ()@end@implementation ViewController7//添加一個initWithNibName方法,標配是return self。此外還須要在初始化時就設定它的hidesBottomBarWhenPushed屬性為YES才幹生效//即。在視圖控制器的執行個體被載入到棧之前,就須要設定這個屬性,否則無效-(id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil{    self.hidesBottomBarWhenPushed=YES;    return self;}@end

三、隱藏UITabBar的另外一種方式


就是把UITabBar的位置移動。即調整frame.origin.y的值。消失就是把它移出螢幕,出現就是把它再放回原地。

(但,還原時又卡頓現象,體驗非常差,不建議)

所以,在ViewController7.m中:

//添加一個試圖即將出現時的方法。並在此設定把tabBar下移。移除整個螢幕,相當於消失了-(void)viewDidAppear:(BOOL)animated{    NSArray *arr1=self.tabBarController.view.subviews;    UIView *view1=[arr1 objectAtIndex:0];    UITabBar *tabBarView1=[arr1 objectAtIndex:1];    //第一個視圖就是全屏。不須要把高度撐滿,所以能夠不做不論什麼設定    //view1.frame=CGRectMake(0, 0, 375, 667);    tabBarView1.frame=CGRectMake(0, 667, 375, 49);}

在ViewController1.m中:

//添加一個viewDidAppear,把下移的tabBar再上移,相當於還原到原地-(void)viewDidAppear:(BOOL)animated{    NSArray *arr2=self.tabBarController.view.subviews;    UITabBar *tabBarView2=[arr2 objectAtIndex:1];    tabBarView2.frame=CGRectMake(0, 618, 375, 49);}


事實上另一種隱藏方式。可是極具殺傷力。一隱全隱了,就是從根源上設定這個標籤控制器不顯示UITabBar。

就是以下的第二行代碼:

    UITabBarController *tbCon1=[[UITabBarController alloc]init];    tbCon1.tabBar.hidden=YES;

截個圖:


【iOS開發-31】UITabBar背景、icon表徵圖顏色、被選中背景設定以及隱藏UITabBar的兩種方式

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.