具有重校验标记字符的IOS 5.1 UILabel忽略TextColor

时间:2012-03-13 17:27:32

标签: xcode uilabel textcolor ios5.1

我一直在开发一个iOS应用程序,最近“升级”到xCode 4.3.1和iOS 5.1模拟器,只有一个角色有一个非常奇怪的问题。它在角色查看器中被称为“重型复选标记”,它在5.0.1及以下版本的应用程序中看起来很棒,并使用.textColor = [UIColor redColor]着色。在5.1中它在模拟器中显示黑色,因为我的手机越狱了,我还没有在实际设备上用5.1检查它。如果我放入任何其他角色它会显示红色,但这个特定角色总是显示黑色。如果我在它之前放置一个空格,它会显示红色,但间距是关闭的,因为我正在使用图层边框。下面是实际代码,但我尝试了一个更简单的标签,并遇到了同样的问题。

        isChecked = [[[UILabel alloc] initWithFrame:CGRectMake(20.0,9.0,20,20)] autorelease];
        isChecked.font = [UIFont boldSystemFontOfSize:24.0];
        isChecked.backgroundColor = [UIColor clearColor];
        isChecked.textColor = [UIColor redColor];
        isChecked.layer.borderColor = [UIColor blackColor].CGColor;
        isChecked.layer.borderWidth = 2.0;
        isChecked.text = @"✔";
        isChecked.tag = 2;
        [cell.contentView addSubview:isChecked];

其他任何遇到过这个或其他特殊字符和UILabel.textColor问题的人?任何建议的解决方法?我已经尝试过暂时删除图层,甚至创建一个新的最小标签,如果只有这个字符,则相同的结果为黑色,如果是其他任何设置则为红色。

2 个答案:

答案 0 :(得分:1)

更新和修复对我有用,但仍然很奇怪。如果有其他人遇到这个不起眼的问题我发现使用命名字体而不是系统字体似乎修复它。

答案 1 :(得分:0)

在iOS9中,他们删除了为非标准字体着色重标记的可能性。这是因为U+2714 HEAVY CHECK MARK包含在Apple的表情符号字符集中,它将被绘制为全彩色位图而不是单色unicode字符。

防止这种情况发生的方法,您可以使用U+FE0E VARIATION SELECTOR-15字符。如果您将字符串更改为@"\u2714\uFE0E",则可以为其着色。

isChecked.text = @"\u2714\uFE0E";
isChecked.textColor = [UIColor redColor];