21
więc jest to standardowy sposób na dodanie filtru do warstwy:Dodawanie CIFilter do CALayer pod Mavericks?
NSView *view = self.window.contentView;
view.wantsLayer = YES;
CATextLayer *textLayer = [CATextLayer layer];
textLayer.frame = CGRectMake(10.0, 10.0, 200.0, 100.0);
textLayer.string = @"foo";
textLayer.foregroundColor = [[NSColor redColor] CGColor];
// Add filter
CIFilter *filter = [CIFilter filterWithName:@"CIGaussianBlur" keysAndValues:@"inputRadius", @5.0, nil];
textLayer.filters = @[filter];
// Attach layer
[view.layer addSublayer:textLayer];
jednak awarii mojej aplikacji na OS X Mavericks. Używany do pracy na 10.8.
2013-10-23 13:09:20.767 Serus[3608:303] *** Terminating app due to uncaught exception 'CAInvalidCIFilter', reason: 'CI filters are not supported by this layer tree: {CIGaussianBlur {
inputImage = "<null>";
inputRadius = 10;
}}.'
filtry CI nie są obsługiwane przez tego drzewa warstwy
ktoś kiedykolwiek widział? Co mogę robić źle?
dzięki! Miałem ten sam problem z setCompositingFilter: i to naprawia. – uliwitness
To nie bez powodu, ponieważ domyślnie CALayery są obecnie wyłączone z procesu, aby system mógł lepiej dzielić zasoby. Z pewnością można by udokumentować lepiej - czy mogę zasugerować radar :)/cc @uliwitness –
z dokumentacji dla tej metody ... Jeśli przypisujesz filtry obrazu Core do widoku za pomocą metod setBackgroundFilters :, setCompositingFilter: lub setContentFilters: nie trzeba jawnie wywoływać tej metody. Te metody automatycznie informują AppKit, że musi on renderować hierarchię warstw w procesie. – uchuugaka