如何在iOS 5中更改UITabBarItem中文本的颜色

13 浏览
0 Comments

如何在iOS 5中更改UITabBarItem中文本的颜色

在iOS 5中,由于具有更多的外观控制功能,我们如何将UITabBarItem的文本颜色从默认的白色改为其他颜色?\n编辑:有效解决方案\n

 [[UITabBarItem appearance] setTitleTextAttributes:
         [NSDictionary dictionaryWithObjectsAndKeys:
          [UIColor blackColor], UITextAttributeTextColor, 
          [UIColor whiteColor], UITextAttributeTextShadowColor, 
          [NSValue valueWithUIOffset:UIOffsetMake(0, 1)], UITextAttributeTextShadowOffset, 
          [UIFont fontWithName:@"Rok" size:0.0], UITextAttributeFont, 
          nil] 
                                              forState:UIControlStateNormal];

0
0 Comments

问题出现的原因是UITextAttributeFont, UITextAttributeTextColor等属性在iOS 7.0中已经被弃用。解决方法是使用新的属性来改变UITabBarItem中文本的颜色。可以使用NSFontAttributeName、NSParagraphStyleAttributeName、NSForegroundColorAttributeName、NSBackgroundColorAttributeName、NSLigatureAttributeName、NSKernAttributeName、NSStrikethroughStyleAttributeName、NSUnderlineStyleAttributeName、NSStrokeColorAttributeName、NSStrokeWidthAttributeName、NSShadowAttributeName和NSVerticalGlyphFormAttributeName这些属性来改变文本的颜色。

0
0 Comments

问题原因:在iOS 5中,更改UITabBarItem文本颜色的方法不够简单和有效。

解决方法:使用上述代码可以更改UITabBarItem的文本颜色。

0
0 Comments

问题:如何在iOS 5中更改UITabBarItem中的文本颜色?

原因:iOS 5.0及更高版本中可以通过设置item标签文本属性来自定义选项卡栏的外观。可以使用UIBarItem声明的外观选择器以及“Customizing Appearance”中列出的方法来自定义所有分段控件的外观。可以使用外观代理(例如[UITabBarItem appearance])自定义所有分段控件的外观,也可以自定义单个选项卡栏的外观。还可以使用“Managing the Finished Selected Image”中列出的方法提供已完成的选中和未选中图像,但是这些方法不参与UIAppearance代理API(参见UIAppearance)。UIKit不会对已完成的图像进行任何自动处理。为了获得良好的结果,必须使用setFinishedSelectedImage:withFinishedUnselectedImage:方法提供匹配的已完成选中和未选中图像对。

解决方法:

1. 可以在iOS 5上使用如下代码来更改文本颜色:

if ([self.tabBarItem respondsToSelector:(setTitleTextAttributes:)]) {
    NSLog(@"*** Support method(iOS 5): setTitleTextAttributes:");
    [self.tabBarItem setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:
                                                [UIFont fontWithName:@"AmericanTypewriter" size:20.0f], UITextAttributeFont,
                                                [UIColor blackColor], UITextAttributeTextColor,
                                                [UIColor grayColor], UITextAttributeTextShadowColor,
                                                [NSValue valueWithUIOffset:UIOffsetMake(0.0f, 1.0f)], UITextAttributeTextShadowOffset,
                                                nil]];
}

2. 可以使用UIAppearance系统和NSDictionary字面量语法来更改文本颜色:

[[UITabBarItem appearance] setTitleTextAttributes:@{
                         UITextAttributeFont : [UIFont fontWithName:@"AmericanTypewriter" size:20.0f],
                    UITextAttributeTextColor : [UIColor blackColor],
              UITextAttributeTextShadowColor : [UIColor grayColor],
             UITextAttributeTextShadowOffset : [NSValue valueWithUIOffset:UIOffsetMake(0.0f, 1.0f)]}];

3. 在iOS 6中,字典键的名称已更改为与OS X相同,可以使用以下代码更改文本颜色:

NSShadow *shadow = [[NSShadow alloc] init];
shadow.shadowColor = [UIColor grayColor];
shadow.shadowOffset = CGSizeMake(0, 1.0);
[[UITabBarItem appearance] setTitleTextAttributes:@{
                         NSFontAttributeName : [UIFont fontWithName:@"AmericanTypewriter" size:20.0f],
              NSForegroundColorAttributeName : [UIColor blackColor],
                       NSShadowAttributeName : shadow }];

4. 无法在iOS 4中设置该属性,但可以自定义选项卡栏以实现相同效果,可以尝试使用第三方库进行自定义,例如:https://github.com/boctor/idev-recipes/tree/master/CustomTabBar。

其他相关问题和解答:

- 问:为什么我在应用程序委托中设置此属性时出现错误?

答:请检查您的构建目标,确保您的构建目标为iOS 5.0。另外,尝试使用[self.tabBarItem setTitleTextAttributes:]方法。

- 问:我可以如何删除选项卡栏图标上的阴影和渐变效果?

答:您可以尝试为选项卡栏设置tintColor,就像为navigationBar一样。您可以使用以下代码:

self.tabBar.tintColor = [UIColor whiteColor];

- 问:您能推荐一些有关自定义外观的有趣文章吗?

答:您可以参考这篇有趣的文章:http://praxisstalled.blogspot.com/2010/08/customising-appearance-of.html

0