【发布时间】:2012-03-13 17:27:32
【问题描述】:
我一直在开发一个 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 的问题吗?任何建议的解决方法?我已经尝试暂时删除该图层,甚至创建一个新的最小标签,如果只有这个字符,则结果相同为黑色,如果有其他字符,则为红色。
【问题讨论】:
-
如果您使用 unicode 转义 (@"\u_whatever_") 而不是在源代码中使用 unicode 字符,会发生什么情况?我记得在某处读到,将 unicode 字符放入源代码是一个坏主意,但我没有明确的来源。
-
更新和修复对我有用,但仍然很奇怪。如果其他人遇到这个晦涩的问题,我发现使用命名字体而不是系统字体似乎可以解决它。
-
@jrturton,很好的建议,它的行为是一样的。如果只是那个字符和系统字体,总是黑色的,但我会留下 @"\u2714" 因为我同意如果阅读代码会更精确。
-
你应该把你的修复作为答案,你以后可以自己接受。很高兴你让它工作了,打开一个关于这个的错误报告可能是值得的。
标签: xcode uilabel textcolor ios5.1