2

こんにちは私は実装しました:

- (NSImage *)dragImageForRowsWithIndexes:(NSIndexSet *)dragRows tableColumns:(NSArray *)tableColumns event:(NSEvent *)dragEvent offset:(NSPointPointer)dragImageOffset
{
    NSImage *dragImage = [NSImage imageNamed:@"Drag-Icon.png"];
    NSInteger numberOfItems = dragRows.count;
    NSAttributedString *numbers = [[NSAttributedString alloc] initWithString:[NSString stringWithFormat:@"%lu",numberOfItems] attributes:attributes];
    [dragImage lockFocus];
    NSRect numbersSurroundRect = NSMakeRect(dragImage.size.width - (numbers.size.width + 15) - strokeWidth - 5, strokeWidth, numbers.size.width + 15, boxHeight);
    NSBezierPath *circle = [NSBezierPath bezierPathWithRoundedRect:numbersSurroundRect xRadius:9.0 yRadius:9.0];
    [[NSColor redColor] set];
    [circle fill];
    [[NSColor whiteColor] set];
    [circle setLineWidth:strokeWidth];
    [circle stroke];
    numbersSurroundRect.origin.y += ((numbersSurroundRect.size.height - numbers.size.height) + 1.75);
    [numbers drawInRect:numbersSurroundRect];
    [dragImage unlockFocus];
    return dragImage;
}

NSTableViewサブクラスで、テーブル内のいくつかの行をドラッグすると、次のようになります。

ここに画像の説明を入力してください

次に、1行または2行だけドラッグすると、次のようになります。

ここに画像の説明を入力してください

古い行数が返され、その上に新しい数が描画されているようです。

誰かがこれに光を当てることができますか?それは私のプロジェクトでARCを使用した結果であり、どういうわけか

4

1 に答える 1

1

元の画像に直接描画しています。次回に新しいコピーを描画できるように、描画する前にコピーを作成する必要があります。

于 2013-01-11T20:03:00.487 に答える