2016-09-23 63 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