0

因此,我最近开始对我的应用进行一些修改,以使其与 iOS 11 兼容。谢天谢地,大部分似乎都是。

但是我确实注意到,如果我在我的工具栏中点击或点击并按住一个图标,该图标由 fontello 的 ttf 文件提供,我会得到一个问号框。

图标示例:

    menu = [[UIBarButtonItem alloc] initWithTitle:@"\ue811" style:UIBarButtonItemStylePlain target:self action:@selector(openMenu:)];
    [menu setTitleTextAttributes:@{NSFontAttributeName:
                                       [UIFont fontWithName:@"fontello"
                                                       size:23],
                                   NSForegroundColorAttributeName:[[UIColor alloc] initWithWhite:1.f alpha:1.f]}
                        forState:UIControlStateNormal];

它在 10.3.1 模拟器中运行良好。只是 iOS 11 似乎搞砸了。我已经阅读了有关设备的修复程序,这意味着更新操作系统,但模拟器运行的是 11.2,所以理论上它应该是修复的。

还有其他人有这个问题吗?知道修复吗?

4

2 回答 2

1

只需为UIControlStateSelected添加标题文本属性:

[menu setTitleTextAttributes:@{NSFontAttributeName:
                                  [UIFont fontWithName:@"fontello"
                                                  size:23],
                              NSForegroundColorAttributeName:[UIColor greenColor]}

forState:UIControlStateSelected];

于 2017-12-14T13:39:12.523 回答
0

如评论中所述,iOS 11 要求您设置正常状态和选定/突出显示状态。以下是对我有用的。根据您拥有的许多按钮,拥有额外的代码并不理想,但是哦。

    [menu setTitleTextAttributes:@{NSFontAttributeName:[UIFont fontWithName:@"fontello"size:23],
                                   NSForegroundColorAttributeName:[[UIColor alloc] initWithWhite:0.f alpha:1.f]}
                        forState:UIControlStateNormal];
    [menu setTitleTextAttributes:@{NSFontAttributeName:[UIFont fontWithName:@"fontello"size:23],
                                   NSForegroundColorAttributeName:[[UIColor alloc] initWithWhite:0.f alpha:0.5f]}
                        forState:UIControlStateHighlighted];
于 2017-12-14T14:19:04.197 回答