Próbuję narysować niestandardowy kształt cienia używając CALayer
:Błąd w cieniu CALayera.
#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
można utworzyć pusty projekt kakao w Xcode, zastąpi zawartość pliku .m Twojego app.delegate jest z powyższego kodu i spróbować samemu .
Wygląda na to, że specyficzna geometria ścieżki cienia powoduje, że CALayer
może się zepsuć.
Na przykład:
CGPathAddRect(shadowPath, NULL, CGRectMake(4, 0, 100, 48));
CGPathAddRect(shadowPath, NULL, CGRectMake(120, 50, 116, 48));
Ten doskonale wygląda w porządku:
Teraz mam zamiar zrobić 1st prostokąt szerszy o 20 punktów:
CGPathAddRect(shadowPath, NULL, CGRectMake(4, 0, 120, 48));
CGPathAddRect(shadowPath, NULL, CGRectMake(120, 50, 116, 48));
... nie wygląda już tak dobrze. Plus 10 punktów:
CGPathAddRect(shadowPath, NULL, CGRectMake(4, 0, 130, 48));
CGPathAddRect(shadowPath, NULL, CGRectMake(120, 50, 116, 48));
Teraz to jest bzdura, prawda?
Pytanie brzmi: co do cholery się dzieje, czy robię to źle, czy coś w tym stylu? Czy uważasz, że to błąd i powinienem złożyć raport?
Tak, ** zdecydowanie ** zgłoś zgłoszenie. Inżynierowie Apple najprawdopodobniej nie odkryją tego rodzaju rzeczy, dopóki ich nie poinformujemy. –
@ DavidRönnqvist to mógł być błąd z mojej strony, nie chciał wzbudzić fałszywego alarmu. – zrxq
Pięć miesięcy później: Nic. – zrxq