Я пытаюсь добавить тень к NSImageView в приложении MAC.Objective C - OS X - Проблема добавляет NSShadow в NSImageView
Я создал пользовательский 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 лет назад, но это, кажется, больше не работает
Adding a Shadow to a NSImageView
Спасибо!
SuperView ваш взгляд также включили ли слой-подложка? Я создал быстрое тестовое приложение с этим кодом, и если у супервизора _also_ нет поддержки слоя, тень будет обрезана на границе границ обзора. Возможно, есть тень, но она находится вне вашего изображения, и у супервизора нет слоя? – Arclite
Кроме того, и это может быть глупый вопрос, есть ли у вас образ на изображении? Тень для «NSImageView» рассчитывается на основе альфа-изображения, поэтому, если нет изображения, тени нет. – Arclite
@Arclite Проблема заключалась в том, что у моего супервизора не было поддержки слоя! Я просто добавил [self.view хочетLayer: YES] к моему viewController viewDidLoad. Если вы дадите ему ответ, я могу принять его как правильно. Спасибо. –