estoy tratando de dibujar una sombra en forma personalizada utilizando CALayer
:Error en el shadowPath de CALayer?
#import <QuartzCore/QuartzCore.h>
@implementation ZKSBAppDelegate
@synthesize window = _window;
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
NSView *view = self.window.contentView;
view.wantsLayer = YES;
CALayer *shadowLayer = [CALayer layer];
shadowLayer.shadowOpacity = 1;
shadowLayer.shadowRadius = 1;
shadowLayer.shadowOffset = NSMakeSize(0, 0);
CGMutablePathRef shadowPath = CGPathCreateMutable();
// setting the following rect's width to 100 fixes everything.
// setting it to 130 screws the shadow even more.
CGPathAddRect(shadowPath, NULL, CGRectMake(4, 0, 120, 48));
CGPathAddRect(shadowPath, NULL, CGRectMake(120, 50, 116, 48));
shadowLayer.shadowPath = shadowPath;
CGPathRelease(shadowPath);
[view.layer addSublayer:shadowLayer];
}
@end
Se puede crear un proyecto vacío de cacao en Xcode, reemplace el contenido del archivo .m de su app.delegate con el código anterior y hacerlo por uno mismo .
Parece que la geometría de la sombra específica provoca CALayer
a volver loco.
Por ejemplo:
CGPathAddRect(shadowPath, NULL, CGRectMake(4, 0, 100, 48));
CGPathAddRect(shadowPath, NULL, CGRectMake(120, 50, 116, 48));
Este se ve perfectamente bien:
Ahora voy a hacer el primero rectángulo más ancho por 20 puntos:
CGPathAddRect(shadowPath, NULL, CGRectMake(4, 0, 120, 48));
CGPathAddRect(shadowPath, NULL, CGRectMake(120, 50, 116, 48));
... no se ve tan bueno ya. Más 10 puntos:
CGPathAddRect(shadowPath, NULL, CGRectMake(4, 0, 130, 48));
CGPathAddRect(shadowPath, NULL, CGRectMake(120, 50, 116, 48));
Ahora que es un error normal, ¿no?
Entonces, la pregunta es: ¿qué diablos está pasando, lo estoy haciendo mal o algo? ¿Crees que es un error y debo presentar un informe?
Sí, definitivamente ** ** presentar un informe. Es muy probable que los ingenieros de Apple no descubran este tipo de cosas a menos que les informemos. –
@ DavidRönnqvist podría haber sido un error de mi parte, no quería provocar una falsa alarma. – zrxq
Cinco meses después: nada. – zrxq