2016-09-23 4 views
2

Я играл с iOS встроенным компасом, и пользовательский интерфейс действительно меня интересует.iOS: Как частично изменить цвет текста

Вот интересная часть:

enter image description here

Цвет текста (даже круг) может быть частично и динамически изменяться.

Я сделал много поиска, но результаты все о атрибутной строке. Как реализовать такой эффект?

Отредактировано:

Я попытался добавить два UILabels (whiteLabel и blackLabel) в качестве whitelabel на дне и blackLabel в верхней части с одной и той же рамке. Затем я установил круг как маску blackLabel.

Проблема: «whiteLabel» полностью покрыта blackLabel, и если круг не пересекается с «blackLabel», обе эти метки не видны.

+3

Это не связано с приписываемой строкой, на мой взгляд. Я ожидаю, что он достигнут с наложением UIViews разных цветов и транспарантов. – Woodstock

ответ

1

Достижение этого, скорее всего, не имеет отношения к NSAttributedStrings, как сказал Вудсток.

Я бы сказал, что это слой UILabel, который воспроизводится в реальном времени, в зависимости от того, с каким другим слоем он пересекается, и областью перекрытия указанного пересечения.

Как только вы рисуете эти общие точки, вы просто применяете маску, которая инвертирует цвета оттуда.

Теперь это немного сложнее, чем потому, что, как представляется, существуют два круга (отсюда два слоя, чтобы найти пересечения с), но в конце концов, это «всего лишь список координат», что координаты метки пересекаются или нет ,

Это может быть интересное упражнение; это, вероятно, потребует от меня приличного количества попыток подражать этому поведению, но я уверен, что мои рассуждения на месте. (получите это?: o)

+0

Получите это. Я перейду к документам Apple для более подробной информации о слое. – CokileCeoi

2

Я предполагаю, что есть два «14» ярлыка в одном и том же месте. Нижний - белый и немасштабированный, а верхний - черный и имеет маску слоя, которая содержит два круга, поэтому она видна только там, где находятся круги.

+0

Это тоже возможно. И, вероятно, более эффективно, чем мое решение –

+0

Прохладный, я попробую ваше решение – CokileCeoi

Смежные вопросы