gpt4 book ai didi

objective-c - 将 NSControl 添加到 IKImageBrowserCell

转载 作者:行者123 更新时间:2023-12-03 16:22:38 25 4
gpt4 key购买 nike

我构建了一个自定义 IKImageBrowserCell,它可以在 IKImageBrowser 中显示我的图像,没有任何问题。

我想尝试覆盖内置的 IKImageBrowser 删除图像功能。目前“开箱即用”,您可以选择一个图像或多个图像,然后按退格键删除。

我想添加一个 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);

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);


if([self isSelected]){

//add a delete icon
CALayer *deleteLayer = [CALayer layer];

[deleteLayer setContents:(id)deleteImage()];
deleteLayer.frame = CGRectMake(relativeImageFrame.size.width-14, (relativeImageFrame.origin.y+relativeImageFrame.size.height)-14, 28, 28);
[layer addSublayer:deleteLayer];
}
}
}

这效果很好,但显然只是一个静态图像。有什么方法可以尝试通过点击此删除图标来获取事件,然后将选定的单元格索引返回到 IKImageBrowser 以便调用它的removeItemsFromIndex: 方法?卡住了!

最佳答案

myIKImageBrowserView.selectionIndexes() 返回当前选定单元格的 NSIndexSet - 您可以在删除图层之前使用它来调用removeItemsFromIndex 方法

https://developer.apple.com/library/mac/documentation/GraphicsImaging/Reference/IKImageBrowserView/index.html

关于objective-c - 将 NSControl 添加到 IKImageBrowserCell,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4837543/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com