自定义UITabBarController以及UITabBar的分析
2013-07-28 14:41
260 查看
最近在研究一些iOS中的基本问题,发现网上的答案很多,但是讲的都不够清晰,自己结合使用的实际情况总结下。
很多时候我们需要自定义UITabBarController或者UITabBar,但是往往用起来有些地方让人困惑。
1、先说下网络上常见的方式:隐藏原有的TabBar,使用UIView完全重新定义TabBar,这样的好处就是,定制化的程度很高
而且很多东西可以完全推倒重来,但是有一个很严重的问题,当使用
viewController.hidesBottomBarWhenPushed = YES的时候,还是无法隐藏UITabBar,这个始终无法隐藏,除非采用自定制的动画移开这个UIView或者设置
这个为Hidden, 最重要的问题也在这里, 所以采用隐藏原有的TabBar的方式之后很多人抱怨无法通过viewController.hidesBottomBarWhenPushed = YES
来隐藏TabBar,网上有很多类似的代码,我这里就不贴源代码了,问题已经分析出来了。
网易新闻的iOS客户端就是这样的方式实现的,有一点点小的瑕疵
还有一种类型的TabBar可以使用这样的方式来实现,上截图
这个就完全是重写了TabBar,而且和以前的系统原生的没有任何关系了,但是用的不多。
2、使用自定义UITabBarController, 继承UITabBarController,采用两种方式(为了适应iOS4 和 iOS5)
主要代码如下
//方法一
UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImageimageNamed:@"tabbar_background"]];
imageView.frame = CGRectMake(0, 0, self.tabBar.frame.size.width,self.tabBar.frame.size.height);
NSLog(@"the frame is %f---%f", self.tabBar.frame.size.width, self.tabBar.frame.size.height);
imageView.contentMode = UIViewContentModeScaleToFill;
[[self tabBar] insertSubview:imageView atIndex:0];
[imageView release];
//方法二 适用于iOS5+
// [self.tabBar setBackgroundImage:[UIImage imageNamed:@"tabbar_background"]];
方法一只能适用于iOS5以下的系统,在iOS5+上面无法使用,所以必须把这两种方法结合起来
当使用viewController.hidesBottomBarWhenPushed = YES
然后再加上
[self.navigationControllerpushViewController:ucenter animated:YES];
就可以实现UITabBar的隐藏,同时也实现了自定义的UITabBarController
截图如下,新浪微博的客户端就是采用这样的方式实现的。
push之后的图片
很多时候我们需要自定义UITabBarController或者UITabBar,但是往往用起来有些地方让人困惑。
1、先说下网络上常见的方式:隐藏原有的TabBar,使用UIView完全重新定义TabBar,这样的好处就是,定制化的程度很高
而且很多东西可以完全推倒重来,但是有一个很严重的问题,当使用
viewController.hidesBottomBarWhenPushed = YES的时候,还是无法隐藏UITabBar,这个始终无法隐藏,除非采用自定制的动画移开这个UIView或者设置
这个为Hidden, 最重要的问题也在这里, 所以采用隐藏原有的TabBar的方式之后很多人抱怨无法通过viewController.hidesBottomBarWhenPushed = YES
来隐藏TabBar,网上有很多类似的代码,我这里就不贴源代码了,问题已经分析出来了。
网易新闻的iOS客户端就是这样的方式实现的,有一点点小的瑕疵
还有一种类型的TabBar可以使用这样的方式来实现,上截图
这个就完全是重写了TabBar,而且和以前的系统原生的没有任何关系了,但是用的不多。
2、使用自定义UITabBarController, 继承UITabBarController,采用两种方式(为了适应iOS4 和 iOS5)
主要代码如下
//方法一
UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImageimageNamed:@"tabbar_background"]];
imageView.frame = CGRectMake(0, 0, self.tabBar.frame.size.width,self.tabBar.frame.size.height);
NSLog(@"the frame is %f---%f", self.tabBar.frame.size.width, self.tabBar.frame.size.height);
imageView.contentMode = UIViewContentModeScaleToFill;
[[self tabBar] insertSubview:imageView atIndex:0];
[imageView release];
//方法二 适用于iOS5+
// [self.tabBar setBackgroundImage:[UIImage imageNamed:@"tabbar_background"]];
方法一只能适用于iOS5以下的系统,在iOS5+上面无法使用,所以必须把这两种方法结合起来
当使用viewController.hidesBottomBarWhenPushed = YES
然后再加上
[self.navigationControllerpushViewController:ucenter animated:YES];
就可以实现UITabBar的隐藏,同时也实现了自定义的UITabBarController
截图如下,新浪微博的客户端就是采用这样的方式实现的。
push之后的图片
相关文章推荐
- 自定义UITabBarController以及UITabBar的分析
- iOS 自定义UITabBarController以及UITabBar的分析
- 本文对UITabBarController进行分析,研究苹果内部是怎么构造出这个类的,以及我们怎么去自定义一个类
- UITabBarController自定义以及隐藏
- ios更改UITabBarController背景以及选中背景图片的方法
- iOS 自定义UITabBarController
- CodeIgniter自定义控制器MY_Controller用法分析
- IOS博客项目搭建-02-自定义底部导航控制器UITabBarController
- UITabBarController自定义转场动画
- 自定义UITabBarController,并设为窗口的根控制器
- 分栏控制器UITabBarController管理多个视图控制器以及界面跳转
- ios navigationcontroller 使用,以及自定义动画切换特效CATransi...
- 自定义UITabBarController标签视图控制器
- 自定义UITabBarController的tabBar背景图片
- Okhttp缓存源码分析以及自定义缓存实现
- 自定义UITabBarController内的tabbar控件
- UITabBarController添加底部TabBar的问题(自定义)
- 自定义UITabbarController
- 自定义UITabbarController控制器
- 自定义UITabBarController标签视图控制器