国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統(tǒng) > iOS > 正文

iOS的UI開發(fā)中UITabBarControlle的基本使用教程

2019-10-21 18:56:48
字體:
供稿:網(wǎng)友
這篇文章主要介紹了iOS的UI開發(fā)中UITabBarControlle的基本使用教程,代碼基于傳統(tǒng)的Objective-C,需要的朋友可以參考下
 

UITabBarController的基本使用

一、簡單介紹

UITabBarController和UINavigationController類似,UITabBarController也可以輕松地管理多個(gè)控制器,輕松完成控制器之間的切換,典型的例子就是QQ、微信等應(yīng)?。

iOS的UI開發(fā)中UITabBarControlle的基本使用教程

二、UITabBarController的使用

1.使用步驟:

(1)初始化UITabBarController

(2)設(shè)置UIWindow的rootViewController為UITabBarController

(3)創(chuàng)建相應(yīng)的子控制器(viewcontroller)

(4)把子控制器添加到UITabBarController

2.代碼示例

新建一個(gè)空的文件,在Application的代理中編碼

YYAppDelegate.m文件

復(fù)制代碼代碼如下:

//
//  YYAppDelegate.m
//  01-UITabBar控制器基本使用
//
//  Created by 孔醫(yī)己 on 14-6-7.
//  Copyright (c) 2014年 itcast. All rights reserved.
//

 

#import "YYAppDelegate.h"

@implementation YYAppDelegate

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    //1.創(chuàng)建Window
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    self.window.backgroundColor = [UIColor whiteColor];
    
    //a.初始化一個(gè)tabBar控制器
    UITabBarController *tb=[[UITabBarController alloc]init];
    //設(shè)置控制器為Window的根控制器
    self.window.rootViewController=tb;
    
    //b.創(chuàng)建子控制器
    UIViewController *c1=[[UIViewController alloc]init];
    c1.view.backgroundColor=[UIColor grayColor];
    c1.view.backgroundColor=[UIColor greenColor];
    c1.tabBarItem.title=@"消息";
    c1.tabBarItem.image=[UIImage imageNamed:@"tab_recent_nor"];
    c1.tabBarItem.badgeValue=@"123";
    
    UIViewController *c2=[[UIViewController alloc]init];
    c2.view.backgroundColor=[UIColor brownColor];
    c2.tabBarItem.title=@"聯(lián)系人";
    c2.tabBarItem.image=[UIImage imageNamed:@"tab_buddy_nor"];
    
    UIViewController *c3=[[UIViewController alloc]init];
    c3.tabBarItem.title=@"動(dòng)態(tài)";
    c3.tabBarItem.image=[UIImage imageNamed:@"tab_qworld_nor"];
    
    UIViewController *c4=[[UIViewController alloc]init];
    c4.tabBarItem.title=@"設(shè)置";
    c4.tabBarItem.image=[UIImage imageNamed:@"tab_me_nor"];
   
    
    //c.添加子控制器到ITabBarController中
    //c.1第一種方式
//    [tb addChildViewController:c1];
//    [tb addChildViewController:c2];
    
    //c.2第二種方式
    tb.viewControllers=@[c1,c2,c3,c4];
    
    
    //2.設(shè)置Window為主窗口并顯示出來
    [self.window makeKeyAndVisible];
    return YES;
}

@end


實(shí)現(xiàn)效果:

 

iOS的UI開發(fā)中UITabBarControlle的基本使用教程


三、重要說明

1.UITabBar

下方的工具條稱為UITabBar ,如果UITabBarController有N個(gè)子控制器,那么UITabBar內(nèi)部就會(huì)有N 個(gè)UITabBarButton作為子控件與之對應(yīng)。

注意:UITabBarButton在UITabBar中得位置是均分的,UITabBar的高度為49。

在上面的程序中,UITabBarController有4個(gè)子控制器,所以UITabBar中有4個(gè)UITabBarButton,UITabBar的結(jié)構(gòu)?大致如下圖所示:

iOS的UI開發(fā)中UITabBarControlle的基本使用教程

2.UITabBarButton

UITabBarButton?面顯?什么內(nèi)容,由對應(yīng)子控制器的tabBarItem屬性來決定

 c1.tabBarItem.title=@"消息";
 c1.tabBarItem.image=[UIImage imageNamed:@"tab_recent_nor"];

iOS的UI開發(fā)中UITabBarControlle的基本使用教程

3.有兩種方式可以往UITabBarController中添加子控制器

(1)[tb addChildViewController:c1];

(2)tb.viewControllers=@[c1,c2,c3,c4];

注意:展示的順序和添加的順序一致,和導(dǎo)航控制器中不同,展現(xiàn)在眼前的是第一個(gè)添加的控制器對應(yīng)的View。

UITabBarController生命周期(使用storyoard搭建)
一、UITabBarController在storyoard中得搭建

1.新建一個(gè)項(xiàng)目,把storyboard中默認(rèn)的控制器刪除,拖UITab Bar Controller。
2.創(chuàng)建viewcontroller,添加到UITab Bar Controller中去(連線)。

iOS的UI開發(fā)中UITabBarControlle的基本使用教程

注意點(diǎn):連線的順序就是將來顯示的順序,顯示在眼前的為第一個(gè)連線的view。
提示:控制器的界面對應(yīng)的tabbarbutton和圖片顯示什么內(nèi)容,由它的控制器確定。
3.設(shè)置子控制器的UITabBar等信息。 

iOS的UI開發(fā)中UITabBarControlle的基本使用教程

4.運(yùn)行效果

iOS的UI開發(fā)中UITabBarControlle的基本使用教程

二、UITabBarController的生命周期演示
思路:新建三個(gè)控制器類來對控制器進(jìn)行分別管理,重寫內(nèi)部的生命周期方法就可以了解UITabBarController內(nèi)部管理機(jī)制。
 
分析代碼:

復(fù)制代碼代碼如下:

//
//  YYbaseViewController.m
//  02-uitabbarcontroller
//
//  Created by 孔醫(yī)己 on 14-6-8.
//  Copyright (c) 2014年 itcast. All rights reserved.
//

 

#import "YYbaseViewController.h"

@interface YYbaseViewController ()

@end


復(fù)制代碼代碼如下:

@implementation YYbaseViewController

 

// 當(dāng)控制器的view加載完畢就調(diào)用
- (void)viewDidLoad
{
    [super viewDidLoad];
    NSLog(@"%@ -  控制器的view加載完畢", [self class]);
}

// 控制器即將顯示的時(shí)候調(diào)用
- (void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:YES];
    NSLog(@"%@ -  控制器即將顯示", [self class]);
}

// 控制器完全顯示的時(shí)候調(diào)用
- (void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];
    NSLog(@"%@ -  控制器完全顯示", [self class]);
}

// 控制器即將消失的時(shí)候調(diào)用
- (void)viewWillDisappear:(BOOL)animated
{
    [super viewWillDisappear:animated];
    NSLog(@"%@ -  控制器即將消失", [self class]);
}
// 控制器完全消失的時(shí)候調(diào)用
- (void)viewDidDisappear:(BOOL)animated
{
    [super viewDidDisappear:animated];
    NSLog(@"%@ -  控制器完全消失", [self class]);
}

- (void)viewWillUnload
{
    [super viewWillUnload];
    NSLog(@"%@ -  view即將被銷毀", [self class]);
}

- (void)viewDidUnload
{
    [super viewDidUnload];
    NSLog(@"%@ -  view完全被銷毀", [self class]);
}

- (void)dealloc
{
    NSLog(@"%@",  [self class]);
}

@end


(1)運(yùn)行程序,打印輸出為:

 

 

說明iOS的UI開發(fā)中UITabBarControlle的基本使用教程:當(dāng)把三個(gè)子控制器都添加給UITabBarController來管理后,當(dāng)程序啟動(dòng)時(shí)它只會(huì)加載第一個(gè)添加的控制器的view。
(2)點(diǎn)擊聯(lián)系人按鈕,切換到第二個(gè)界面。打印輸出為:

iOS的UI開發(fā)中UITabBarControlle的基本使用教程

說明:先把第一個(gè)view移開,再把新的view添加上去,但是第一個(gè)view并沒有被銷毀。
(3)重新點(diǎn)擊消息界面,打印如下:

iOS的UI開發(fā)中UITabBarControlle的基本使用教程

說明:先重新切換到消息界面,one控制器直接即將顯示,沒有進(jìn)行加載證明了(2)中第一個(gè)view移除后并沒有被銷毀(因?yàn)樗目刂破鬟€存在,有一個(gè)強(qiáng)引用引用著它),且two的view移除后也沒有被銷毀。無論怎么切換,控制器和view都不會(huì)被銷毀。
UINavigationController和UITabBarController一個(gè)通過棧來管理,一個(gè)通過普通的數(shù)組來進(jìn)行管理。
 
補(bǔ)充說明:UITabBarController中的UITabBar實(shí)際高度為49.
在Application的下面方法中打印UITabBar的frame進(jìn)行查看。

復(fù)制代碼代碼如下:

- (void)applicationDidBecomeActive:(UIApplication *)application
{
    // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.
    UITabBarController *tb=(UITabBarController*)self.window.rootViewController;
    NSLog(@"%@",NSStringFromCGRect(tb.tabBar.frame));
}

打印結(jié)果為:

 

iOS的UI開發(fā)中UITabBarControlle的基本使用教程



注:相關(guān)教程知識閱讀請移步到IOS開發(fā)頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 南阳市| 马山县| 乡宁县| 七台河市| 连州市| 崇信县| 白银市| 利川市| 康乐县| 剑河县| 大足县| 福州市| 河北区| 仁寿县| 湘潭县| 宁化县| 庆阳市| 宾川县| 巴南区| 文成县| 社会| 汕头市| 航空| 瓦房店市| 乐至县| 阿勒泰市| 龙江县| 平武县| 洞口县| 卢湾区| 微博| 东莞市| 陵川县| 阳朔县| 突泉县| 乐清市| 惠州市| 四川省| 洪湖市| 洛扎县| 大邑县|