所以我最近开始修改我的应用程序以使其兼容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,所以理论上应该修复它。
还有其他人有这个问题吗?知道修复吗?
答案 0 :(得分:1)
只需为 UIControlStateSelected 添加标题文字属性:
[menu setTitleTextAttributes:@{NSFontAttributeName:
[UIFont fontWithName:@"fontello"
size:23],
NSForegroundColorAttributeName:[UIColor greenColor]}
forState:UIControlStateSelected];
答案 1 :(得分: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];