CALayer рисует тень поверх изображения контента - PullRequest
2 голосов
/ 28 февраля 2011

У меня есть экземпляр CALayer, для которого я установил png-файл в качестве содержимого.После настройки различных свойств тени тень рисуется над / сверху изображения, а не под ним.

Вот код:

CALayer *boardLayer = [CALayer layer];
boardLayer.frame = CGRectMake(self.layer.frame.origin.x, 
  self.layer.frame.origin.y, self.layer.frame.size.width, BOARD_HEIGHT);

boardLayer.shadowColor = CGColorCreateGenericRGB(100.0, 100.0, 0.0, 1.0);
boardLayer.shadowOffset = CGSizeMake(10, 10);
boardLayer.shadowOpacity = 0.99f;
boardLayer.shadowRadius = 5.0f;
boardLayer.contents = (id)[self imageToImageRef:[NSImage imageNamed:@"board.png"] 
                                   withMaxWidth: 0
                                   andMaxHeight: 0];
boardLayer.contentsGravity = kCAGravityResize;

boardLayer.masksToBounds = NO;

На скриншоте видно, что желтая тень находится над содержимым:

enter image description here

Isесть что-то, чего мне не хватает при настройке CALayer?

Спасибо, Марк.

РЕДАКТИРОВАТЬ: я также пробовал выше код с отрицательным смещением Y, тот же результат, тень вышеизображение.

1 Ответ

1 голос
/ 28 февраля 2011

Попробуйте установить отрицательное значение Y смещения Y (10, -10).Вы не указываете, является ли это Mac или iPhone, но вы можете быть удивлены тем фактом, что разные части UIKit, AppKit, CoreGraphics и CoreAnimation имеют разные системы координат.Убедитесь, что вы знаете, какой путь "вверх".

...