Quando si imposta la proprietà di trasformazione del mio CALayer con un CATransform3DRotate, il livello viene ruotato correttamente. Tuttavia, i bordi del livello sono frastagliati e non anti-alias. Ho letto un paio di messaggi sul tema:Bordi diagonali anti-alias di CALayer
iPhone: CALayer + rotate in 3D + antialias?
iPhone - Jagged Edges when applying perspective to CALayer
Ho cercato di integrare i loro consigli impostando le seguenti proprietà sul mio strato 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 Ho anche scavalcato drawLayer: inContext: metodo del mio livello diagonale per garantire 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);
}
Cosa mi manca?
Fantastico! Ottimo post. – tassock
C'è un'alternativa massicciamente migliore su 7.0 e successivi. http://stackoverflow.com/questions/6245276/anti-alias-diagonal-edges-of-calayer/19443644#19443644 – cbowns