Я хочу добавить тень вокруг ВНЕШНЕГО края ПОЛОГО CGPath (эти два слова очень важны: снаружи + полый :) ).
Реализация теней Apple позволяет создавать только «заполненные» тени.
Итак...как отрезать внутреннюю часть самой тени? Если бы это был вызов рендеринга, я бы вызвал методы CGContextSetClip*, чтобы обрезать его туда, где я хотел... но я не понимаю, как вы до этого доберетесь, поскольку это не вызов рендеринга и не сам CALayer. .
(досадное последствие того, что Apple «скрывает» это как набор магических переменных, я полагаю?)
NB: это только для iOS — IIRC на Mac у вас есть прямой доступ к фильтрам, используемым для создания теней, поэтому вы можете создавать свои собственные (произвольные) тени вручную.
ОБНОВЛЕНИЕ:
Я придумал, как обрезать, чтобы показать только ВНУТРЕННЮЮ часть тени: установить "layer.mask" в качестве нового слоя, который является клоном текущего слоя (т.е. тот же путь), и установите цвет заливки пути на что-нибудь с полной альфой.
Это противоположно тому, что я пытаюсь сделать, поэтому, если бы я мог придумать способ заставить слой маски инвертировать альфа-канал (0 становится 1, 1 становится 0), я был бы там...