我正在使用iOS内置Compass应用程序,UI确实让我很好奇。
这是有趣的部分:
文本的颜色(甚至圆圈)可以部分动态更改。
我做了很多搜索,但结果都是关于属性字符串的。如何实现这样的效果?
编辑:
我尝试在底部添加两个UILabel(whiteLabel
和blackLabel
)为whitelabel
,在顶部添加blackLabel
同一帧。然后我将圆圈设置为blackLabel
的掩码。
问题是' whiteLabel'完全由blackLabel
覆盖,如果圆圈与' blackLabel'不相交,则两个标签都不可见。
答案 0 :(得分:2)
我想在同一个地方有两个“14”标签。底部是白色且未遮盖,顶部是黑色,并且有一个包含两个圆圈的图层蒙版,所以它只在圆圈所在的位置可见。
答案 1 :(得分:1)
实现这一点很可能与NSAttributedStrings
无关,就像伍德斯托克所说的那样。
我会说这是UILabel的图层,它会根据与其相交的其他图层以及所述交叉点的重叠区域进行实时重新着色。
一旦你计算了这些共同点,你就可以应用一个从那里反转颜色的掩码。
现在它有点复杂,因为看起来有两个圆圈(因此有两个层可以找到交叉点),但最后,它只是标签坐标相交或不相交的“坐标列表”。
这可能是一项有趣的练习;它可能会花费我相当多的尝试来模仿这种行为,但我非常有信心我的推理是有道理的。 (得到它?:o)