IKImageBrowserで画像を表示しているカスタムIKImageBrowserCellを作成しました。NSControlをIKImageBrowserCellに追加する
組み込みのIKImageBrowser画像削除機能を無効にしようとしたいと思います。現在のところ、あなたは画像を選択したり、複数の画像を選択したり、「BACKSPACE」を押して削除することができます。
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:メソッドを呼び出す方法はありますか?頑張って!
も参照します。http:// stackoverflow.com/questions/8839230/adding-nsbutton-to-ikimagebrowsercell – wmorrison365