关于iOS7-8的系统UITabBarController

眼看iOS9就要出了。最近做项目用的系统的UITabBarController,就mark一下遇到的问题。

系统默认的UITabBarController使用storyboard可以进行设置。

下面主要是讲代码设置tabbar的图片与颜色。

1.tabbar的背景颜色或背景图(如图灰色效果)

    tabBarController.tabBar.backgroundImage = [UIImage imageNamed:@"tabbar_unselected"];

这个图片可以是一张宽度为2像素,高98的一个细线图。

2.设置选中item的背景颜色或背景图(如图,蓝色效果)

    UIImage* selectedImage = [UIImage imageNamed:@"tabbar_select"];
    selectedImage = [selectedImage resizableImageWithCapInsets:UIEdgeInsetsZero];
    tabBarController.tabBar.selectionIndicatorImage = selectedImage;

这里的图片也可以跟上面的背景图片一样,可以是一张宽度为2像素,高98的一个细线图。

selectedImage = [selectedImage resizableImageWithCapInsets:UIEdgeInsetsZero];

是为了用细线图填充要设置的image

3.设置图片颜色与字体颜色及字号

    NSMutableDictionary *textAttrs=[NSMutableDictionary dictionary];
    textAttrs[NSForegroundColorAttributeName]=[UIColor whiteColor];
    textAttrs[NSFontAttributeName] = [UIFont systemFontOfSize:12.f];

    MLNavigationController * oneController = [[MLNavigationController alloc] initWithRootViewController:VC1];    oneController.tabBarItem.title = @"首页";    oneController.tabBarItem.image = [[UIImage imageNamed:@"tabbar_home"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];    oneController.tabBarItem.selectedImage = [[UIImage imageNamed:@"tabbar_home"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];    [oneController.tabBarItem setTitleTextAttributes:textAttrs forState:UIControlStateNormal];

我的需求是设置图片与颜色在选中与未选中状态下都为白色。

3.1字体颜色设置

字典textAttrs的key值可以双击去查看你要设置的选项来设置,这里注意一点

- (void)setTitleTextAttributes:(NSDictionary *)attributes forState:(UIControlState)state NS_AVAILABLE_IOS(5_0) UI_APPEARANCE_SELECTOR;

这个方法state只能设置UIControlStateNormal,UIControlStateSelected,UIControlStateDisabled三个type

3.2图片颜色设置

图片你会发现用了一个image的方法

- (UIImage *)imageWithRenderingMode:(UIImageRenderingMode)renderingMode NS_AVAILABLE_IOS(7_0);

这个方法是告诉系统取消渲染,使用原本的图片颜色。

这样你就可以用你提供的selectedImage与image进行设置了。

oneController.tabBarItem.image = [[UIImage imageNamed:@"tabbar_home"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];oneController.tabBarItem.selectedImage = [[UIImage imageNamed:@"tabbar_home"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
时间: 2024-10-27 09:48:56

关于iOS7-8的系统UITabBarController的相关文章

跳转 App Store 评分 IOS7及其他系统版本

//iOS7和其他系统版本跳转链接不一样 - (void)clickUrl:(id)sender { UIButton *bt = (UIButton *)sender; NSString *str = @""; if( ([[[UIDevice currentDevice] systemVersion] doubleValue]>=7.0)) { str = [NSString stringWithFormat:@"itms-apps://itunes.apple.c

用tomcat配置https自签名证书,解决 ios7.1以上系统, 苹果inHouse发布

用tomcat配置https自签名证书,解决 ios7.1以上系统苹果inHouse发布不能下载安装的问题教程,话说,我其实最讨厌配置某某环境了,因为某一个小环节一旦出错,你的所有工作往往会功亏一篑,而且蛋疼到不行也不知道哪里出了错,我发布的的这个福利,虽然网上也有很多,但是都很零碎,有的资料还有错误,有的资料又不全,你说这样的情况,怎么不让我们搞的头疼,不过在此感谢哪些热心提供资料的人,现在既然我把它弄好了,就为大家做做贡献吧. 我目前给大家展示的是windowserver2003环境下搭建的

IOS7最新的系统漏洞

苹果近期就实用户发现了一个新iOS7系统漏洞,利用这个漏洞绕过password输入界面,在不知道password的情况下打开你近期使用的软件. 而这个过程仅仅需短短的5秒钟! 经測试,这个漏洞并没那么严重.危害也非常有限. 首先须要满足两个条件: 1.有未接来电   2.锁屏的时候是有应用在执行. 而且这个漏洞仅仅能够越权控制近期的一个应用. 操作步骤: 1.开启随意应用.锁屏. 2.激活设备并訪问控制中心,随后进入飞行模式.拉下通知中心,点击未接来电. 系统要求:iOS 7.1.1之前的系统

iOS7 iOS8 调用系统通讯录界面

#pragma mark--选取手机联系人 -(void)selectPeople{ //这个变量用于记录授权是否成功,即用户是否允许我们访问通讯录 int __block tip=0; //声明一个通讯簿的引用 ABAddressBookRef addBook =nil; //创建通讯簿的引用 addBook=ABAddressBookCreateWithOptions(NULL, NULL); //创建一个出事信号量为0的信号 dispatch_semaphore_t sema=dispat

iOS:在tableView中通过Masonry使用autolayout在iOS7系统出现约束崩溃

一.出现崩溃情景: 给tableView创建一个头视图,也即tableHeaderView,然后使用Masonry并切换到iOS7/7.1系统给tableHeaderView中的所有子视图添加约束,此时出现崩溃. 二.崩溃日志: Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Auto Layout still required after executing -layo

iOS7系统 视图高度一直为480(上下部分黑屏)

今天遇到一个奇葩的问题,就是在iOS7以上的系统运行时,通过 UIScreen *screen = [UIScreen mainScreen]; CGRect    rect   = [screen bounds]; 获得的屏幕高度竟然为480. 纠结了好久,上网查了下,http://blog.csdn.net/wsk_123_123/article/details/24969975中说是项目启动图片的原因, 然后就去把项目启动图片设置好,果然就好了,但是这是为什么呢?我想不明白.

使用IOS7原生API进行二维码条形码的扫描

使用IOS7原生API进行二维码条形码的扫描 IOS7之前,开发者进行扫码编程时,一般会借助第三方库.常用的是ZBarSDK,IOS7之后,系统的AVMetadataObject类中,为我们提供了解析二维码的接口.经过测试,使用原生API扫描和处理的效率非常高,远远高于第三方库. 一.使用方法示例 官方提供的接口非常简单,代码如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30

iOS7中的状态栏

?从iOS7开始,系统提供了2种管理状态栏的方式 ?通过UIViewController管理(每一个UIViewController都可以拥有自己不同的状态栏) ?通过UIApplication管理(一个应用程序的状态栏都由它统一管理) ?在iOS7中,默认情况下,状态栏都是由UIViewController管理的,UIViewController实现下列方法就可以轻松管理状态栏的可见性和样式 ?状态栏的样式 - (UIStatusBarStyle)preferredStatusBarStyle

iOS7中的多任务 - Background Fetch,Silent Remote Notifications,?Background Transfer Service

转自:http://onevcat.com/2013/08/ios7-background-multitask/ 在IOS 7 出来不就,公司内部也组织了一次关于IOS 7 特性的的分享,今天看见onevcat 的blog,感叹它很有耐性和细心,写的这么详细,那就毫无保留原封不动的(其实也没有什么好改写的,实在是perfect )的分享给大家,希望对大家有所帮助. WWDC 2013 Session笔记 - iOS7中的多任务 iOS7的后台多任务特性 这是我的WWDC2013系列笔记中的一篇,