我试图在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属性没有任何作用。

当应用程序加载时,我还尝试在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无效吗?

最佳答案

它对我也没有任何改变。
Apple Documentation
在上面的链接上检查。只能自定义四个键:

NSString *const UITextAttributeFont;
NSString *const UITextAttributeTextColor;
NSString *const UITextAttributeTextShadowColor;
NSString *const UITextAttributeTextShadowOffset;

关于objective-c - 无法在UITabBarItem上启用字母间距(字距调整),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31545610/

10-16 22:40