Как добавить NSButton в CALayer?
Я пытаюсь добавить NSButton на слой внутри объекта IKImageBrowserCell. Я нашел этот пост полезным, но он не вникает в суть. Я уже пробовал это:
- (CALayer *) layerForType:(NSString*) type
{
CGColorRef color;
//retrieve some usefull rects
NSRect frame = [self frame];
NSRect imageFrame = [self imageFrame];
NSRect relativeImageFrame = NSMakeRect(imageFrame.origin.x - frame.origin.x, imageFrame.origin.y - frame.origin.y, imageFrame.size.width, imageFrame.size.height);
/* foreground layer */
if(type == IKImageBrowserCellForegroundLayer){
//no foreground layer on place holders
if([self cellState] != IKImageStateReady)
return nil;
//create a foreground layer that will contain several childs layer
CALayer *layer = [CALayer layer];
layer.frame = CGRectMake(0, 0, frame.size.width, frame.size.height);
//add a checkbox to tell whether to upload this one or not
NSRect checkFrame = NSMakeRect( ( frame.size.width/2)-5 , frame.size.height - 19, 18,18);
NSButton *uploadCheckBox = [[NSButton alloc] initWithFrame:checkFrame];
[uploadCheckBox setButtonType:NSSwitchButton];
[layer addSublayer :[uploadCheckBox layer]];
return layer;
}
//(...)
return nil;
}
Но, к сожалению, кнопка не появляется на слое. Я думаю, что расположение кнопки хорошо, так как она основана на примере кода из приложения Apple. У меня есть ощущение, что эта строка не так:layer addSublayer :[uploadCheckBox layer]];
, поскольку я должен добавить весь NSButton, а не только его растровое представление (слой). Любая помощь с благодарностью!
1 ответ
Вы не можете добавить NSView внутри CALayer. Вы должны создать новый слой для вашей кнопки и добавить в свой удерживающий слой.