Отсечение теней, созданных CALayer.shadow

Я хочу добавить тень вокруг ВНЕШНЕГО края ПОЛОГО CGPath (эти два слова очень важны: снаружи + полый :) ).

Реализация теней Apple позволяет создавать только «заполненные» тени.

Итак...как отрезать внутреннюю часть самой тени? Если бы это был вызов рендеринга, я бы вызвал методы CGContextSetClip*, чтобы обрезать его туда, где я хотел... но я не понимаю, как вы до этого доберетесь, поскольку это не вызов рендеринга и не сам CALayer. .

(досадное последствие того, что Apple «скрывает» это как набор магических переменных, я полагаю?)

NB: это только для iOS — IIRC на Mac у вас есть прямой доступ к фильтрам, используемым для создания теней, поэтому вы можете создавать свои собственные (произвольные) тени вручную.


ОБНОВЛЕНИЕ:

Я придумал, как обрезать, чтобы показать только ВНУТРЕННЮЮ часть тени: установить "layer.mask" в качестве нового слоя, который является клоном текущего слоя (т.е. тот же путь), и установите цвет заливки пути на что-нибудь с полной альфой.

Это противоположно тому, что я пытаюсь сделать, поэтому, если бы я мог придумать способ заставить слой маски инвертировать альфа-канал (0 становится 1, 1 становится 0), я был бы там...

9
задан Adam 19 March 2012 в 07:43
поделиться