2013-08-23 1 views
3

У меня есть NSView, что я изменить некоторые свойства, чтобы дать сделать это прямоугольник с закругленными углами, с серым цветом, и добавить его в мой взгляд (за все)NSView слоем протянута через все содержание

float gray = 60.0f/255.0f; 
NSView* background = [[NSView alloc] initWithFrame: self.iconContainer.frame]; 
CALayer *viewLayer = [CALayer layer]; 
[viewLayer setBackgroundColor:CGColorCreateGenericRGB(gray, gray,gray, 1)]; //RGB plus Alpha Channel 
[viewLayer setCornerRadius:5.0f]; 
[background setWantsLayer:YES]; // view's backing store is using a Core Animation Layer 
[background setLayer:viewLayer]; 

// Place view behind all other views 
[self.iconContainer addSubview:background positioned:NSWindowBelow relativeTo:nil]; 

Однако независимо от того, что я пытаюсь, этот конкретный вид рисуется над всем остальным.

+0

Вы пропускаете свой цвет фона. Поскольку вы создали его, вы должны его отключить. –

+0

Спасибо, Питер, однако я выпускаю его позже с CGColorRelease (viewLayer.backgroundColor) – 1dayitwillmake

ответ

7

Как правило, это поведение вызвано использованием слоев Core Animation на подвью, а у супервизора нет.

Включение слоев основной анимации в супервизии должно исправить проблему, так как любые подзоны будут затем рисоваться с использованием слоев Cora Animation, что делает процесс рисования в порядке порядка подсмотров.

+0

Так оно и было, спасибо. Такая простая вещь, интересно, почему это нигде не упоминается – 1dayitwillmake

+0

Спасибо за это! Я размышлял об этом некоторое время. – Tibidabo

+1

Даже спустя 4 с половиной года это было решением! – Klaas

 Смежные вопросы

  • Нет связанных вопросов^_^