Нарисуйте NSShadow внутри NSView
Я пытаюсь нарисовать NSShadow на фоне NSView. Я хочу использовать его как замену NSGradient, так как мне нужно поддерживать Mac OS X Tiger. Как я могу это сделать? Я знаю, что это должно быть довольно легко, и я, должно быть, делаю некоторую ошибку.
Спасибо!
1 ответ
Самым простым подходом может быть просто установить свойства тени для слоя вида. Если у вас есть NSView* с именем view
было бы что-то вроде:
[[view layer] setShadowOpacity:0.5];
Установка непрозрачности тени на значение, большее 0, сделает тень видимой. Нарисованная тень будет похожа на альфа-канал представления, поэтому все, что вы рисуете в представлении, будет иметь тень. Есть несколько других атрибутов тени, которые вы можете установить, например радиус размытия. Взгляните на справочную страницу CALayer для получения дополнительной информации.
Если вы должны использовать NSShadow, просто настройте тень, прежде чем вы начнете рисовать:
- (void)drawRect:(NSRect)rect
{
NSShadow *shadow = [[[NSShadow alloc] init] autorelease];
[shadow setShadowBlurRadius:3.0];
[shadow setShadowOffset:NSMakeSize(0.0, 5.0)];
[shadow setShadowColor:[NSColor colorWithCalibratedWhite:0.0 alpha:0.6]];
[shadow set];
// continue with your drawing...
}