2
我想定製IKImageBrowserView,以便我可以在IKImageBrowserView的單元格上添加NSButton或其他控件。我試圖cutomize 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天的時間。 任何幫助都是可觀的。 謝謝
是他們任何其他的方式來添加按鈕上的地層,因爲當我想在你的代碼中添加按鈕什麼都沒有顯示在IKIMageBrowserItem上。如果(type == IKImageBrowserCellForegroundLayer){ NSButton * btn = [[NSButton alloc] initWithFrame:CGRectMake(0,0,rect.size.width,30)]; [btn setTitle:@「Button」]; [layer addSublayer:[btn layer]]; /*將按鈕添加到此圖層*/ } – Surjeet