Lorsque je définis la propriété de transformation de ma CALayer avec un CATransform3DRotate, la couche est correctement pivotée. Cependant, les bords de la couche sont irréguliers et non anti-aliasés. J'ai lu les messages couple sur le sujet:Arêtes diagonales anti-alias de CALayer
iPhone: CALayer + rotate in 3D + antialias?
iPhone - Jagged Edges when applying perspective to CALayer
J'ai essayé d'intégrer leurs conseils en définissant les propriétés suivantes sur ma couche diagonale
CALayer* layer = myView.layer;
layer.shadowOpacity = 0.01;
layer.edgeAntialiasingMask = kCALayerTopEdge | kCALayerBottomEdge | kCALayerRightEdge | kCALayerLeftEdge;
layer.borderWidth = 1.0;
layer.borderColor = [UIColor clearColor].CGColor;
layer.backgroundColor = [UIColor greenColor].CGColor;
I 'ai également surchargé le drawLayer: inContext: méthode de ma couche diagonale pour assurer l'anti-aliasing:
-(void)drawLayer:(CALayer*)layer inContext:(CGContextRef)context
{
CGContextSetAllowsAntialiasing(context, true);
CGContextSetShouldAntialias(context, true);
CGContextSetFillColorWithColor(context, [UIColor greenColor].CGColor);
CGContextFillRect(context, self.bounds);
}
Qu'est-ce qui me manque?
Génial! Super article. – tassock
Il existe une alternative massivement meilleure sur 7.0 et plus tard. http://stackoverflow.com/questions/6245276/anti-alias-diagonal-edges-of-calayer/19443644#19443644 – cbowns