UILabel问题。对齐重叠的UILabel

时间:2009-09-03 00:40:56

标签: iphone uilabel

我有两个UILabel。我想在另一个上重叠一个。将标签称为“下方”和“上方”。

结束:A C E G

下:B D F

UILabel“over”将其文字用红色绘制。 “下”将为蓝色。视觉效果将是连续字母之间的交替颜色。

我可以使用哪些控件来精确对齐每个标签中的文字以将其关闭?

干杯, 道格

2 个答案:

答案 0 :(得分:0)

您必须确保您使用的字体是等宽字体,否则字符将不会完全按照您希望的方式排列,只需要它们之间的空格。 (我相信iPhone OS中有一种打字字体是等宽字体; YMMV。)此外,您必须在underLabel前加上一个空格,以便下面的代码能够正常工作。

要将一个UILabel映射到另一个上,请尝试:

overLabel.opaque = NO; // so you can see what is under overLabel
overLabel.textColor = [UIColor redColor];
overLabel.backgroundColor = [UIColor clearColor];
underLabel.frame = overLabel.frame;
underLabel.textColor = [UIColor blueColor];

请注意上面的代码underLabel会占用overLabel的框架,因为后者的框架更宽;如果它是overLabel的另一种方式会被剪裁。

所有这一切,我敢打赌,有一种更好的方法来抚育这只特殊的猫。这个解决方案对我来说感觉非常“圆钉,方孔”。

答案 1 :(得分:0)

我同意fbrereton。这似乎是实现目标的一种非常困难的方式。查看NSString UIKit Additions,了解如何绘制自己的字符串,并在自己的自定义-drawRect:中自行创建角色。你将拥有更大的控制权,代码不应该那么复杂。 iPhone没有非常好的布局支持(没有像Mac提供的那样),但对于这个简单的东西,它应该不会太糟糕。