Я хочу настроить IKImageBrowserView, чтобы добавить NSButton или другой элемент управления в ячейку IKImageBrowserView. Я попытался вырезать класс IKBrowserViewCell, но я не понял, как и где я добавляю NSbutton, чтобы он отображался на IKBrowserViewItem. Вот код, который я пробовал до сих пор.Как настроить IKImageBrowserView для добавления NSButton для каждого элемента?
#import "ImageBrowserView.h"
#import "ImageBrowserCell.h"
- (IKImageBrowserCell *) newCellForRepresentedItem:(id) cell
{
return [[ImageBrowserCell alloc] init];
}
В ячейке класса
- (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);
// place holder layer
if(type == IKImageBrowserCellPlaceHolderLayer){
//create a place holder layer
CALayer *layer = [CALayer layer];
layer.frame = CGRectMake(0, 0, frame.size.width, frame.size.height);
CALayer *placeHolderLayer = [CALayer layer];
placeHolderLayer.frame = *(CGRect*) &relativeImageFrame;
float fillComponents[4] = {1.0, 1.0, 1.0, 0.3};
float strokeComponents[4] = {1.0, 1.0, 1.0, 0.9};
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
//set a background color
color = CGColorCreate(colorSpace, fillComponents);
[placeHolderLayer setBackgroundColor:color];
CFRelease(color);
//set a stroke color
color = CGColorCreate(colorSpace, strokeComponents);
[placeHolderLayer setBorderColor:color];
CFRelease(color);
[placeHolderLayer setBorderWidth:2.0];
[placeHolderLayer setCornerRadius:10];
CFRelease(colorSpace);
[layer addSublayer:placeHolderLayer];
return layer;
}
return nil;
}
Этот класс клеток есть способ вернуть кадр различного контроля IKImageBrowserCell и не позволяет добавлять в подвид. Я не получил, где я выделил свой NSButton, чтобы потом показать его на элементе. Пожалуйста, помогите мне. Я уже потратил около 1 дня на это. Любая помощь будет заметна. Thanks
Это их другой способ добавить кнопку на слое forground, потому что, когда я пытаюсь добавить кнопку в ваш код, ничего не отображается на IKIMageBrowserItem. if (type == IKImageBrowserCellForegroundLayer) { NSButton * btn = [[NSButton alloc] initWithFrame: CGRectMake (0, 0, rect.size.width, 30)]; [btn setTitle: @ "Button"]; [layer addSublayer: [btn layer]]; /* Добавьте свои кнопки на этот слой */ } – Surjeet