したがって、オブジェクトを1つのソースから複数の潜在的な宛先にドラッグしたいと思います。オブジェクトが各宛先の上にあるとき、私はそれを別の画像に「モーフィング」したいと思います。NSDragSourceの観点からこれを行う簡単な方法はありますか?
2382 次
4 に答える
19
これを行うenumerateDraggingItemsWithOptions:
にNSDraggingInfo
は、ドラッグ先のハンドラーメソッドのメソッド(つまり、NSDraggingDestination
プロトコルの実装)を使用します。
例えば:
- (NSDragOperation)draggingUpdated:(id < NSDraggingInfo >)sender
{
NSImage* newDragImage = <take it from wherever>;
[sender enumerateDraggingItemsWithOptions:0
forView:sender.draggingSource
classes:[NSArray arrayWithObject:[NSPasteboardItem class]]
searchOptions:nil
usingBlock:^(NSDraggingItem *draggingItem, NSInteger idx, BOOL *stop) {
NSRect theFrame = draggingItem.draggingFrame;
theFrame.size = newDragImage.size;
[draggingItem setDraggingFrame:theFrame contents:newDragImage];
*stop = NO;
}];
}
于 2013-06-13T08:53:55.253 に答える
5
Joshua Nozziは、これを行うための優れた方法を投稿しています:http: //joshua.nozzi.name/2009/10/jlndrageffectmanager/
于 2009-11-27T22:05:40.160 に答える
4
NSDraggingInfoのenumerateDraggingItemsWithOptionsメソッドを確認してください。
于 2012-08-28T23:11:31.617 に答える
3
ドラッグソースAPIだけを使用してこれを行う方法はありません。
Interface Builderを見ると、それはあなたが望むものと似たようなことをします。ライブラリからボタンをドラッグすると、ドラッグの途中でボタンがアニメーション化されます。
ほとんどの人によると、Appleがこれを行っている方法は、ドラッグ画像を小さな透明な画像にすることです。次に、ウィンドウを作成し、マウスに追従させます。その後、ウィンドウを使用して、任意のタイプのアニメーションを実行できます。
于 2009-10-10T05:58:32.430 に答える