2010-08-07 7 views
3

Dois-je pouvoir remplacer drawInContext() et dessiner en dehors des limites de mon CALayer? Même si ma couche a maskToBounds sur NO (la valeur par défaut) mon drawInContext() est appelé avec un ensemble de clips aux limites de ma couche et je suis incapable de dessiner à l'extérieur de celui-ci.Pourquoi mon CGContext est-il découpé en limites?

Ma couche d'essai fait quelque chose comme ceci:

-(void)drawInContext:(CGContextRef)context 
{ 
    [super drawInContext:context];  
    NSLog(@"mask to bounds=%d", self.masksToBounds); // NO 
    CGRect clip = CGContextGetClipBoundingBox(context); 
    NSLog(@"clip=%f,%f,%f,%f", clip.origin.x, clip.origin.y, clip.size.width, clip.size.height); // reports the bounds 

    CGContextSetStrokeColorWithColor(context, [[UIColor whiteColor] CGColor]); 
    CGContextBeginPath(context); 
    CGContextSetLineWidth(context, 5.0); 
    CGContextMoveToPoint(context, 0, 0); 
    CGContextAddLineToPoint(context, 500, 0.0); // wider than my layer... 
    CGContextStrokePath(context); 
} 

et voici comment je l'ai mis en place:

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    CALayer *layer = [[MyLayer alloc] init]; 
    layer.needsDisplayOnBoundsChange=YES; 
    layer.frame = CGRectMake(50, 50, 200, 200); 
    [self.view.layer addSublayer:layer]; 
} 

Est-ce juste une limitation des couches d'animation de base? (Dois-je dessiner dans la couche au-dessus de cette couche?)

merci.

Répondre

4

Il n'y a aucun moyen pour que le contenu d'une couche déborde ses limites; Toutefois, vous pouvez ajouter une sous-couche qui déborde en spécifiant une image qui s'étend en dehors des limites et en définissant la propriété masksToBounds sur NO (valeur par défaut).