无法在UITabBarItem上启用字母间距(字距调整)

时间:2015-07-21 17:19:29

标签: objective-c nsattributedstring uitabbaritem kerning letter-spacing

我正在尝试在UITabBarItem标题标签上启用Text Kerning(增加Letter间距)。但是为UITabBarItem提供NSKernAttributeName属性没有任何区别。但是,其他两个属性正在工作:NSForegroundColorAttributeName,NSFontAttributeName。我已尝试使用系统字体和另一个字体:SFUIDisplay-Regular。

是的,我也尝试过使用UIControlStateNormal和UIControlStateSelected。

以下是代码:

for (UITabBarItem *item in self.tabBar.items)
{
[item setTitleTextAttributes: @{
                    NSKernAttributeName: @(4.0f), /* does nothing */
                    NSForegroundColorAttributeName: [AppStyle whiteColor],
                    NSFontAttributeName: font
                }
                forState:UIControlStateNormal];

NSKernAttributeName属性没有任何效果。

当应用程序加载时,我也尝试在Appearance中执行此操作,如下所示:

    NSDictionary *attributes = @{
                             NSKernAttributeName: @(4.0f) /* does nothing */
                             };
[[UITabBarItem appearance] setTitleTextAttributes: attributes
                                         forState: UIControlStateNormal];
[[UITabBarItem appearance] setTitleTextAttributes: attributes
                                         forState: UIControlStateSelected];

哪个也什么也没做。

我能够让NSKernAttributeName工作的唯一地方是在UILabel上使用setAttributedText。

你们知道为什么设置其他标题文本属性适用于UITabBarItem,但NSKernAttributeName不起作用吗?

1 个答案:

答案 0 :(得分:3)

它也没有为我改变任何东西。 Apple Documentation 检查上面的链接。只能定制四个键,

NSString * const UITextAttributeFont;

NSString * const UITextAttributeTextColor;

NSString * const UITextAttributeTextShadowColor;

NSString * const UITextAttributeTextShadowOffset;