J'utilise ce code dans ma sous-classe UIView pour dessiner un cercle avec un remplissage dégradé:CGContextSetShadow produit aucun résultat
- (void)drawRect:(CGRect)rect {
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetShadow (context, CGSizeMake(4,4), 5);
CGContextBeginPath (context);
CGContextAddEllipseInRect(context, CGRectMake(self.bounds.origin.x, self.bounds.origin.y, 38, 38));
CGContextClosePath (context);
CGContextClip (context);
CGContextDrawLinearGradient(context, gradient, CGPointMake(CGRectGetMinX(self.bounds), CGRectGetMaxX(self.bounds)), CGPointMake(CGRectGetMaxX(self.bounds), CGRectGetMinY(self.bounds)), 0);
}
Le cercle et le gradient tirent bien, mais je ne vois pas d'ombre. Je ne suis pas sûr pourquoi cela ne fonctionne pas, parce que j'ai utilisé la même fonction CGContextSetShadow dans une sous-classe de vue différente et cela a bien fonctionné.
REMARQUE: Dans le code ci-dessus, "gradient" est un ivar qui a été défini précédemment. Un dessin de gradient ne compte pas comme remplissage;
Voulez-vous dire allumer ou éteindre l'ombre? Je ne comprends pas vraiment le fil de la pensée. – indragie
Éteindre. Remplissez-le, puis éteignez-le et dessinez le dégradé. –