5

我正在尝试在 UITabBarItem 标题标签上启用文本字距调整(增加字母间距)。但是为 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 属性没有任何作用。

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

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

这也无济于事。

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

你们知道为什么设置其他标题文本属性对 UITabBarItem 有效,但 NSKernAttributeName 无效吗?

4

1 回答 1

4

它对我来说也没有任何改变。 苹果文档 在上面的链接上检查。只能自定义四个键:

NSString *const UITextAttributeFont; 
NSString *const UITextAttributeTextColor; 
NSString *const UITextAttributeTextShadowColor; 
NSString *const UITextAttributeTextShadowOffset; 
于 2015-09-30T15:52:33.357 回答