由定义TabBar

即篇稿子是克隆「的包里出什么」系列来写的。本想起名为「你的手机里发生什么」,后来思考不对,手机里还有一部分隐信息,所以即便当后止加了「应用」两个字。

UITabBarController是以IOS应用开发被甚常用之一个近乎,继承给UIViewController,来兑现多独视图间的切换,但众多时段系统自带的TabBar不可知满足我们的要求,系统自带的有些性我们往往束手无策修改,像切换项的图的轻重缓急,这时候就需我们于定义TabBar。例如,我们怀念实现下方的TabBar的这功能,使用系统的哪怕无法就。

相似应用类的文章,都是择优引进,这篇非这么做。唯以手机采用的点子来见自己,说不定还会让读者有惊喜。

图片 1图片 2图片 3

那么我先来了:

以身作则所待图片下载地址http://download.csdn.net/detail/zsmile123/8136531

1.天天动听、MoboPlayer、多扣读

整日动听、MoboPlayer、多看读

2.网易新闻、百度新闻、新浪新闻、知乎日报,嗯,随时准备动手个很新闻

来个好新闻

3.科研类:WolframAlpha、MathStudio、C4droid、Autodesk
ForceEffect、Flib、金属探测器

五金探测器是故来娱乐的,不过确实可以为此……

科研类

4.百科类:萌典、百度百科

萌典其实某些乎不萌……词语解释可以比《古汉语词典》

百科类

5.网络类:QQ空间、QQ、百度贴吧、知乎、迅雷、微博、微信、人人、简书

网络类

6.购物类:天猫、淘宝、当当、亚马逊、支付宝钱包

购物类

7.艺术类:Autodesk Pixlr Express、Autodesk Sketchbook、Camera FV

艺术类

8.末段是片杂类,只是如果特别推荐生虎天气,一个气候以会生这样要命的信息量(体感温度、气压、风速、风向、湿度、降雨概率、日出日落时间,十天天气预报……),很Geek的感到。

杂类

——————————————————下面演示过程———————————————–

先是,新建一个连续给UIViewController得视图控制器,随便起名为CustomTarBarViewController,勾选上xib。我们率先来布局一下TabBar,也就是是仿照系统的TabBar

图片 4

—————————–依次拖放view,imageView,以及5只button,并于5只button设置tag值为1,2,3,4,5————————————————

图片 5


图片 6

—————————————-CustomTarBarViewController.h文件中——————————————–

#import <UIKit/UIKit.h>

@interface CustomTarBarViewController :
UIViewController<UINavigationControllerDelegate >

{

//正常状态下之图数组

NSArray *_nomalImageArray;

//高亮状态下之图形数组

NSArray *_hightlightedImageArray;

}

//添加点儿个属性,selectedIndex用来记录选中的凡那么一个视图(或button),viewControllers数组用来存放在button点击相应的视图控制器

@property (nonatomic ,assign ) NSInteger selectedIndex;

@property (nonatomic ,retain ) NSArray *viewControllers;

//将xib中的view,和5个button连线

@property (retain , nonatomic ) IBOutlet UIView *tabBarView;

– ( IBAction)tabBarButtonClick:( UIButton *)sender;

@end

———————————————————–CustomTarBarViewController.m文件中————————————

– ( id)initWithNibName:( NSString *)nibNameOrNil bundle:( NSBundle
*)nibBundleOrNil

{

self = [ super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];

if ( self) {

//这里是为每次首次于登都能够加载第一单视图

_selectedIndex = – 1 ;

}

return self ;

}

– ( void)viewDidLoad

{

[ super viewDidLoad ];

self .view .backgroundColor = [UIColor redColor ];

//正常状态下按钮图片

_nomalImageArray =
[[ NSArray alloc ] initWithObjects:@”tabbar_button_binders_normal.png” ,@”tabbar_button_updates_normal.png”,@”tabbar_button_centeradd.png” ,@”tabbar_button_sessions_normal.png”,@”tabbar_button_notes_normal.png” , nil ];

//高亮状态下按钮图片

_hightlightedImageArray =
[[ NSArray alloc ] initWithObjects:@”tabbar_button_binders_selected.png” ,@”tabbar_button_updates_selected.png”,@”tabbar_button_centeradd.png” ,@”tabbar_button_sessions_selected.png”,@”tabbar_button_notes_selected.png” , nil ];

if (_selectedIndex == – 1 )

{

self. selectedIndex = 0 ;

}

}

#pragma mark —- 切换视图选项

– ( IBAction)tabBarButtonClick:( UIButton *)sender

{

// 时当选的button 
self.selectedIndex 会调用set 方法,button的tag值-1即为夫对应之视图

self. selectedIndex = sender. tag – 1;

}

#pragma mark —- 重写selectedIndex 属性的set 方法

– ( void)setSelectedIndex:( NSInteger)aselectedIndex

{

//判断新的值与原先的值是否等于,相等则选择的任然是眼下视图,不开处理

if (aselectedIndex == _selectedIndex)

{

return;

}

//_selectedIndex   >=0 说明选中了某个一样按钮

if (_selectedIndex >= 0 )

{

// 需要拿前方一个视图移除

// 根据_selectedIndex 从视图控制器数组中取出先前入选的视图

UIViewController *previousViewController =
[ _viewControllers objectAtIndex:_selectedIndex ];

[previousViewController. view removeFromSuperview];

//需要用前方一个 button的图形转吧平常状态的图形

UIButton *previousButton = ( UIButton
*)[ self. view viewWithTag: _selectedIndex+1];

[previousButton
setBackgroundImage :[ UIImage imageNamed :[_nomalImageArray objectAtIndex : _selectedIndex ]]
forState :(UIControlStateNormal)];

}

// 然后将新的aselectedIndex 赋值给_selectedIndex

_selectedIndex = aselectedIndex;

// 显示新的视图

UIViewController *currentViewController =
[ _viewControllers objectAtIndex:_selectedIndex];

//找到 当前button,将其 背景图片改也高亮

UIButton *currentButton = ( UIButton
*)[ self. view viewWithTag: _selectedIndex +1];

[currentButton
setBackgroundImage :[ UIImage imageNamed :[_hightlightedImageArray objectAtIndex : _selectedIndex ]]
forState :(UIControlStateNormal )];

//由于第一单视图是加在导航中之,所以要看清

if
([currentViewController isKindOfClass:[ UINavigationController class]])

{

// 表示此视图是navgationController

// 设置导航的代理

(( UINavigationController *)currentViewController). delegate = self;

}

//设置当前视图的高低

currentViewController. view. frame
= CGRectMake( 0, 0, 320, self. view. bounds.size. height- 44);

// 添加到tab 的view 上

[ self. view addSubview:currentViewController. view];

[ self. view sendSubviewToBack:currentViewController. view];

}

@end

————————————–AppDelegate.h文件中给TabBar添加视图————————————————

#import “AppDelegate.h”

#import “CustomTarBarViewController.h”

@implementation AppDelegate

– ( BOOL)application:( UIApplication *)application
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

{

self . window = [[ UIWindow alloc ]
initWithFrame :[[ UIScreen mainScreen ] bounds ]];

self . window .backgroundColor = [UIColor whiteColor ];

[ self . window makeKeyAndVisible ];

//这里为第一个视图添加了领航,也可不添加(这里演示导航的长)

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

homeVC.view .backgroundColor = [UIColor redColor ];

UINavigationController *nav =
[[[UINavigationController alloc ]initWithRootViewController :homeVC] autorelease ];

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

setVC.view .backgroundColor = [UIColor blueColor ];

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

shareVC.view .backgroundColor = [UIColor yellowColor ];

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

plusVC.view .backgroundColor = [UIColor greenColor ];

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

playVC.view .backgroundColor = [UIColor orangeColor ];

CustomTarBarViewController *tabVC =
[[CustomTarBarViewController alloc ] init ] ;

//将视图加到tabVC中

tabVC. viewControllers =
[ NSArrayarrayWithObjects:nav,setVC,shareVC,plusVC,playVC, nil];

self . window .rootViewController = tabVC;

return YES ;

}

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图