我有一个带有自定义单元格的表格视图,我尝试通过在模拟器中选中Color Blended Layer
时使单元格内的所有子视图都为绿色来优化它。
当单元格中UILabel
的背景设置为白色时:
let title = UILabel()
contentView.addSubview(title)
title.background = UIColor.whiteColor()
title.text = "Hi, how are you?"
这个UILabel子视图在模拟器中会变成绿色,这很好。但是,如果我将文本更改为某些中文:
title.text = "你好"
UILabel子视图将变为红色。这个SO post提供了有关情况的一些解释。实际上有解决方案吗?
答案 0 :(得分:2)
仅供参考,XIB(个人偏好)或代码中的三个步骤。
- 设置opaque = YES
- backgroundColor =纯色
- clipsToBound = YES
醇>
然后非英语UILabel将渲染 - 传递一次,为绿色。
答案 1 :(得分:1)
我不得不说这是Apple的内部实现。我们不应该/(可能)不能摆弄它。毕竟,您看到的“颜色”只是图层结构的表示。你附上的问题的答案是一个很好的解释。
我建议不要计划任何过早的优化。毕竟,即使您确实感觉到性能提升,“颜色混合层”也很难看,无法应用于真实设备。或者只是尽量不去关注它!
编辑:
答案 2 :(得分:0)
检查你的textlayer.string第一个字母是英文还是其他
NSMutableArray*arrAlphabets;
arrAlphabets=[NSMutableArray arrayWithObjects:@"A", @"B", @"C", @"D", @"E", @"F", @"G", @"H",@"I",@"J",@"K",@"L",@"M",@"N",@"O",@"P",@"Q",@"R",@"S",@"T",@"U",@"V",@"W",@"X",@"Y",@"Z",nil]]
然后在Indexpath方法的内部Tableview单元格行:
NSString *str=[textlayer.string substringToIndex:1];
if(str isEqualToString:arrAlphabets) //use for loop to run arralphabets
{
//do your code to maintail the layer color .
}
希望这个概念可以帮助你:)
答案 3 :(得分:-1)
根据使用的字体,您可以检查等宽字符(西方)与比例字符(中文)。
等宽字符是8位,其中比例1是16位。我不知道Swift如何检查字节大小,因此我无法提供任何代码。
Apple的Swift编程指南可以提供帮助。查看标题为:字符串的Unicode表示的部分。