我一直在开发iOS应用程序,最近“升级”到了xCode 4.3.1和iOS 5.1模拟器,并且只有一个字符就遇到了一个非常奇怪的问题。它在字符查看器中被称为“Heavy Check Mark”,在我的应用程序(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时遇到问题吗?有建议的解决方法吗?我尝试临时删除该图层,甚至创建一个新的最小标签,如果仅此字符,则结果为黑色,如果有其他字符,则结果为红色。

最佳答案

更新并修复适合我的方法,但仍然很奇怪。如果还有其他人遇到这个晦涩的问题,我发现使用命名字体而不是系统字体似乎可以解决此问题。

09-26 18:02