我正在尝试在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不起作用吗?
答案 0 :(得分:3)
它也没有为我改变任何东西。 Apple Documentation 检查上面的链接。只能定制四个键,
NSString * const UITextAttributeFont;
NSString * const UITextAttributeTextColor;
NSString * const UITextAttributeTextShadowColor;
NSString * const UITextAttributeTextShadowOffset;