A CAShapeLayer utilizza un CGPathRef per disegnare le sue cose. Quindi ho un percorso stellare, e voglio un'ombreggiatura liscia con un raggio di circa 15 unità. Probabilmente ci sono alcune buone funzionalità in alcune nuove versioni di iPhone OS, ma ho bisogno di farlo da solo per una versione vecchia di 3.0 (che la maggior parte delle persone usa ancora).Come disegnare le ombre a discesa in iOS
Ho provato a fare cose DAVVERO spiacevoli: Ho creato un ciclo for e creato sequenzialmente come 15 di quei percorsi, trasformandoli-scalandoli passo dopo passo per diventare più grandi. Quindi assegnandoli a un nuovo CAShapeLayer creato e diminuendoli alfa un po 'su ogni iterazione. Non solo che questo ridimensionamento è matematicamente scorretto e fa schifo (dovrebbe essere relativo al contorno!), L'ombra non è arrotondata e appare davvero brutta. Ecco perché le belle ombre morbide hanno un raggio.
Le punte di una stella non dovrebbero apparire completamente nitide dopo un'ombra di 15 unità. Dovrebbero essere morbidi come la crema. Ma nella mia brutta soluzione sono solo come un'arpa come la stella stessa, dato che tutto ciò che faccio è ridimensionare la stella 15 volte e diminuirla di 15 volte. Brutta.
Mi chiedo come fanno i grandi? Se hai un percorso arbitrario e quel percorso deve gettare un'ombra, come funziona l'algoritmo? Probabilmente il percorso dovrebbe essere espanso come 30 volte, punto per punto rispetto alla tangente del contorno lontano dalla parte riempita, e solo di 0,5 unità per avere una bella fusione.
Prima di re-inventare la ruota, forse qualcuno ha un esempio pratico o un link?
Per CGContextSetShadow, il secondo parametro deve essere un CGSize, come in CGSizeMake (5,5) –