我有两个 UILabel。我想把一个重叠在一起。将标签称为“下”和“上”。
结束:ACEG
下:BDF
UILabel "over" 将其文本绘制为红色。“下”将显示为蓝色。视觉效果将是连续字母之间的交替颜色。
我可以使用哪些控件来精确对齐每个标签中的文本以实现这一点?
干杯,道格
我同意弗布雷顿。这似乎是一个很难实现目标的方法。查看NSString UIKit Additions以了解如何绘制自己的字符串并在自定义的-drawRect:
. 您将拥有更大的控制权,并且代码不应该那么复杂。iPhone 没有很好的布局支持(没有像 Mac 那样提供),但对于这么简单的东西,它应该不会太糟糕。
您必须确保您使用的字体是等宽字体,否则字符将不会像您希望的那样完全对齐,它们之间只有一个空格。(我相信 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
'frame,因为后者的 frame 更宽;如果反过来,overLabel
就会被剪掉。
话虽如此,我敢打赌,有一种更好的方法可以给这只猫剥皮。这个解决方案对我来说感觉非常“圆钉,方孔”。