Я новичок во вводе сообщений о переполнении стека, но у меня возникла та же проблема, и я решил ее, поэтому я подумал, что после нескольких часов поиска в сети, чтобы найти решение, было бы неплохо ответить на него.
Мое решение состоит в том, чтобы создать подкласс для NSClipView со следующим кодом для drawRect ...
- (void)drawRect:(NSRect)dirtyRect
{
[super drawRect:dirtyRect];
NSRect childRect = [[self documentView] frame];
[NSGraphicsContext saveGraphicsState];
// Create the shadow below and to the right of the shape.
NSShadow* theShadow = [[NSShadow alloc] init];
[theShadow setShadowOffset:NSMakeSize(4.0, -4.0)];
[theShadow setShadowBlurRadius:3.0];
// Use a partially transparent color for shapes that overlap.
[theShadow setShadowColor:[[NSColor grayColor]
colorWithAlphaComponent:0.95f]];
[theShadow set];
[[self backgroundColor] setFill];
NSRectFill(childRect);
// Draw your custom content here. Anything you draw
// automatically has the shadow effect applied to it.
[NSGraphicsContext restoreGraphicsState];
}
Затем необходимо создать экземпляр подкласса и установить его с помощью селектора setContentView.
Вам также необходимо перекрашивать представление клипа каждый раз, когда изменяется размер представления контента.Если у вас настроено представление содержимого для изменения размера холста, когда пользователь этого захочет, тогда, если вы не перекрасите представление клипа, некоторые неприятные следы тени останутся позади.
Вам не нужно возиться с клипамикак предлагали другие.
Надеюсь, это поможет!