IKImageBrowserView를 사용자 정의하여 IKImageBrowserView의 셀에 NSButton 또는 다른 컨트롤을 추가 할 수 있습니다. 내가 IGBrowserViewCell 클래스를 cutomize하려했지만, 어떻게 얻었는지 NSbutton을 추가하여 IKBrowserViewItem에 표시하도록했다. 여기에 지금까지 시도한 코드가 있습니다. 셀 클래스IKImageBrowserView를 사용자 정의하여 각 항목에 NSButton을 추가하는 방법은 무엇입니까?
- (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;
}
이 셀 클래스
#import "ImageBrowserView.h"
#import "ImageBrowserCell.h"
- (IKImageBrowserCell *) newCellForRepresentedItem:(id) cell
{
return [[ImageBrowserCell alloc] init];
}
IKImageBrowserCell는 다양한 제어 프레임을 반환하는 방법이 있고 하위 뷰로서 추가 할 수 없다. 항목에 표시 할 수 있도록 NSButton을 할당하는 위치를 얻지 못했습니다. 도와주세요. 나는 이것에 관해 벌써 약 1 일을 낭비했다. 도움이 될만한 의견이 있습니다. 감사합니다.
내가 코드 아무것도에 버튼을 추가하려고 할 때이 IKIMageBrowserItem에 표시되기 때문에 forground에는 레이어에 버튼을 추가하는 그들의 다른 방법입니다. if (type == IKImageBrowserCellForegroundLayer) { NSButton * btn = [NSButton alloc] initWithFrame : CGRectMake (0, 0, rect.size.width, 30)]; [btn setTitle : @ "버튼"]; [레이어 addSublayer : [btn 레이어]]; /*이 레이어에 버튼 추가 */ } – Surjeet