3

我一直在开发一个 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 的问题吗?任何建议的解决方法?我已经尝试暂时删除该图层,甚至创建一个新的最小标签,如果只有这个字符,则相同的结果为黑色,如果有其他字符,则为红色。

4

2 回答 2

1

Update and fix that works for me, but still very strange. If anyone else ran into this obscure issue I found that using a named font instead of system font seems to fix it.

于 2012-03-14T01:42:29.010 回答
1

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

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

isChecked.text = @"\u2714\uFE0E";
isChecked.textColor = [UIColor redColor];
于 2017-05-05T13:04:36.977 回答