2016-09-23 15 views
2

iOS内蔵のコンパスアプリで再生していてUIが好奇心をそそられています。ここiOS:部分的にテキストの色を変更する方法

は興味深い部分である:

enter image description here

テキスト(さえ円)の色を部分的にかつ動的に変更することができます。

私は多くの検索をしましたが、結果はすべて属性付き文字列に関するものです。このような効果をどのように実装するのですか?

編集:

Iは同じフレームと上部に下部にwhitelabelblackLabelように、2つのUILabels(whiteLabelblackLabel)を追加しようとしています。私は円をblackLabelのマスクとして設定しました。

'whiteLabel'は完全にblackLabelで覆われています。円が 'blackLabel'と交差しない場合、両方のラベルは表示されません。

+3

私の意見では、これは属性付き文字列とは関係ありません。さまざまな色と透明度のUIViewがオーバーレイされていることが予想されます。 – Woodstock

答えて

1

これを達成するには、おそらくNSAttributedStringsとは関係ありません。ウッドストック氏によると、

UILabelのレイヤーは、他のどのレイヤーと交差しているのか、そしてその交差点のオーバーレイしている領域に応じてライブで再現されます。

これらの共通ポイントを特定したら、そこから色を反転するマスクを適用するだけです。

2つの円が存在するように見えますが(交差点を見つけるために2つのレイヤーがあります)、最終的にはラベルの座標が交差する「座標の単なるリスト」なので、少し複雑です。

これは興味深い練習になる可能性があります。それはおそらく私はその行動を模倣しようとかなりの量の試みを取るだろうが、私はかなり私の推論がポイントにあると確信しています。 (取得する?:o)

+0

それを入手してください。私は、レイヤーの詳細については、Appleのドキュメントを参照してください。 – CokileCeoi

2

同じ場所に2つの「14」ラベルがあると想像します。下の1つは白でマスクされていません。上のマスクは黒で、レイヤーマスクには2つの円が含まれているため、円がある場所のみが表示されます。

+0

これも実際に可能です。そしておそらく私の解決策よりも効率的です –

+0

クール、私はあなたの解決策を試みます – CokileCeoi

関連する問題