Je voudrais ajouter l'ombre à un UIImageView qui a des couches d'image.(iphone) ajouter une ombre à la couche
J'ai essayé la route self.layer.shadowOffset/de shadowOpacity, mais il est trop lent ..
Quand je veux ajouter une ombre, j'appeler la méthode ci-dessous addShadowLayerWithOffset que je comptais appeler drawRect et ajouter l'ombre ..
Mais drawRect n'est pas appelé.
Qu'est-ce qui me manque ici?
- (void)drawRect:(CGRect)rect
{
SYSLOG(LOG_DEBUG, "in drawRect, isShadowed: %d", isShadowed);
if (isShadowed == true)
{
CGContextRef currentContext = UIGraphicsGetCurrentContext();
CGContextSaveGState(currentContext);
CGContextSetShadow(currentContext, CGSizeMake(100, 100), 3);
[super drawRect: rect];
CGContextRestoreGState(currentContext);
}
else
[super drawRect: rect];
}
- (void) addShadowLayerWithOffset: (int)offset
{
// self.layer.shadowOffset = CGSizeMake(offset,offset);
// self.layer.shadowOpacity = 0.7f;
// self.layer.shadowRadius = 5.0;
isShadowed = true;
[self setNeedsDisplay];
}
- EDIT
ok, je me suis drawLayer appelée. J'avais besoin de [self.layer setNeedsDisplay] et non de [self.layer setNeedsPlay] où self est la sous-classe UIImageView.
Mais l'ombre n'est pas dessinée, en effet l'image (couche d'origine) elle-même n'est pas affichée non plus.
Que devrais-je changer?
- (void) drawLayer: (CALayer*) layer inContext: (CGContextRef)context
{
SYSLOG(LOG_DEBUG, "in drawLayer, isShadowed: %d", isShadowed);
if(isShadowed == true)
{
CGContextSaveGState(context);
CGContextSetShadow(context, CGSizeMake(10, 10), 3);
[super drawLayer: layer inContext: context];
CGContextRestoreGState(context);
}
else
[super drawLayer: layer inContext: context];
}
Je suppose que [super drawRect: rect] est correct car [super dealloc] est correct. Quoi qu'il en soit, drawLayer n'est pas appelé non plus. J'ai défini le délégué des couches que j'ai ajouté à la vue. – eugene
Merci d'avoir appelé drawLayer, mais l'image n'est pas en cours de dessin, voir mon édition s'il vous plaît – eugene
@Eugene: ops, désolé, vous avez raison, je n'ai pas vu que c'était dans une méthode drawRect ... je donne un regarde ton montage maintenant ... – meronix