2016-09-23 50 views
2

我正在玩iOS内置的Compass应用程序,UI确实让我好奇。iOS:如何部分改变文本的颜色

这里是有趣的部分:

enter image description here

文本的颜色(甚至圆圈)可以被部分地和动态地改变。

我做了很多搜索,但结果都是关于属性字符串。如何实现这样的效果?

被修改:

我试图作为whitelabel在底部和blackLabel在用相同的帧的顶部添加两个UILabels(whiteLabelblackLabel)。然后我把圆圈设置为blackLabel的面具。

问题是'whiteLabel'完全覆盖blackLabel,如果该圆与'blackLabel'不相交,则两个标签都不可见。

+3

在我看来,这与属性字符串无关。我期望它能够覆盖各种颜色和透明度的UIViews。 – Woodstock

回答

1

实现这一点很可能与NSAttributedStrings无关,就像伍德斯托克说的那样。

我会说这是UILabel的图层,根据其与其相交的其他图层以及所述交叉点的覆盖区域进行实时重新着色。

一旦你找出这些共同点,你只需要应用一个掩模,从那里反转颜色。

现在它比这更复杂一点,因为似乎有两个圆圈(因此有两层可以找到交点),但最终它只是标签坐标相交的“坐标列表” 。

这可能是一个有趣的练习;我可能会花费大量的努力来模仿这种行为,但我相信我的推理很重要。 (得到它?:o)

+0

得到它。我将转向Apple的文档以获取关于图层的更多细节。 – CokileCeoi

2

我想象在同一个地方有两个“14”标签。最下面的一个是白色的,没有遮罩,最上面的一个是黑色的,并且有一个包含两个圆圈的图层蒙版,所以它只能在圆圈所在的位置显示。

+0

这实际上也是可能的。可能比我的解决方案效率更高 –

+0

酷,我会尝试你的解决方案 – CokileCeoi