Цель C - OS X - проблема добавления NSShadow в NSImageView
Я пытаюсь добавить тень к NSImageView в приложении MAC.
Я создал собственный класс NSImageView "ShadowView.h" и изменил drawRect: примерно так:
- (void)drawRect:(NSRect)dirtyRect {
[super drawRect:dirtyRect];
NSShadow *shadow = [[NSShadow alloc] init];
[shadow setShadowBlurRadius:5];
[shadow setShadowOffset:NSMakeSize(30.0, 3.0)];
[shadow setShadowColor:[NSColor redColor]];
[shadow set];
[self setWantsLayer:YES];
[self setShadow:shadow];
}
Однако ничего не происходит. Кроме того, когда я отлаживаю, я вижу, что вышеупомянутый код вызывается. Я смотрел на этот вопрос 5 лет назад, но, похоже, он больше не работает
Спасибо!
2 ответа
При добавлении тени к представлению в суперпредставлении этого представления также должна быть включена поддержка слоев. Если это не так, тень представления обрезается на своих границах, как показано в этом примере приложения:
Убедитесь, что вы звоните -setWantsLayer:YES
на суперпредставлении вашего представления (или установите флажок "Базовый слой анимации" в Интерфейсном Разработчике), чтобы убедиться, что тень полностью видна:
Вы должны установить их где-нибудь еще, например, initWithFrame: вынуть их из drawRect:
[self setWantsLayer:YES];
[self setShadow:shadow];