Quindi voglio trascinare un oggetto da una fonte a più destinazioni potenziali. Quando l'oggetto si trova su ogni destinazione, voglio che si "trasformi" in un'immagine diversa. C'è un modo semplice per farlo dal punto di vista di NSDragSource?Come si modifica un'immagine trascinata e trascinata a metà trascinamento?
risposta
Non c'è modo di farlo utilizzando solo le API di trascinamento.
Se guardi a Interface Builder fa qualcosa di simile a quello che vuoi. Quando trascini un pulsante fuori dalla libreria, il pulsante si anima nel mezzo del trascinamento.
Secondo la maggior parte delle persone il modo in cui Apple sta facendo ciò è rendere l'immagine di trascinamento un'immagine piccola e trasparente. Quindi creano una finestra e fanno seguire il mouse. È quindi possibile utilizzare la finestra per eseguire qualsiasi tipo di animazione desiderata.
Joshua Nozzi ha pubblicato un ottimo modo per fare questo: http://joshua.nozzi.name/2009/10/jlndrageffectmanager/
Sì. Questo è un gestore drop-in per questo particolare effetto. Il download contiene un'app demo. –
Se si finisce con l'uso di questa classe, fammelo sapere e aggiungerò la tua app alla lista sulla pagina di origine. –
Partenza metodo enumerateDraggingItemsWithOptions di NSDraggingInfo.
Per favore modifica la tua risposta per elaborare: come utilizzeresti questo metodo per risolvere questo problema? –
È possibile farlo utilizzando il metodo enumerateDraggingItemsWithOptions:
di NSDraggingInfo
nei metodi del gestore di destinazione di trascinamento (ad esempio, l'implementazione del protocollo NSDraggingDestination
).
Ad esempio:
- (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;
}];
}
- 1. Come verificare se una finestra viene trascinata C# WPF
- 2. Ricezione di un'immagine trascinata dalla pagina Web alla finestra WPF
- 3. IOS CS193p - Perché la connessione IBAction è stata trascinata nel file .m e non in .h?
- 4. Come verificare se l'elemento è attualmente in fase di trascinamento
- 5. Inizializza elemento e avvia il trascinamento con un solo clic
- 6. Come iniziare a misurare a metà strada?
- 7. a metà testo (come Google Plus)
- 8. Modifica del cursore durante il trascinamento
- 9. Controllo dell'aspetto dell'effetto trascinamento HTML5
- 10. Split un elenco a metà
- 11. SSL è per metà simmetrico e per metà asimmetrico?
- 12. Ottieni le coordinate del centro dopo il trascinamento e il pan finito
- 13. aggiungi li a metà del ul (jquery)
- 14. Cerchio pieno a metà con d3.js
- 15. Eventi per il trascinamento della finestra in Java
- 16. html/css interruzione linea a metà punto
- 17. Modifica del puntatore del mouse per i file di trascinamento HTML5 (Goccia di trascinamento di GMail)
- 18. Interrompi il trascinamento della mappa di Google all'esterno dei limiti visivi
- 19. Come si modifica ansible_default_ipv4?
- 20. Matrice di numeri e numeri a metà in Ruby
- 21. Quando si stampa un tavolo, chrome e safari stanno tagliando una riga a metà
- 22. Passaggio/modifica di un evento di trascinamento dell'interfaccia utente jQuery
- 23. Crea piattaforma di modifica di trascinamento della selezione in HTML5
- 24. FlexBox divisa verticalmente contenitore a metà
- 25. CSS: Impostare confine a metà larghezza
- 26. UIButton che ignorerà un 'trascinamento' e lo passerà a UIScrollView
- 27. Prevenire una pagina Web da trascinamento su un iPad nel codice
- 28. Modifica dragshadow in Android, mentre il trascinamento avviene
- 29. Come scrivere a metà di un file in C++?
- 30. Vorrei implementare una metà UITableView a metà di MapView UIView con un pulsante nel mezzo
Almeno a partire dal 10.7 e versioni successive la risposta accettato non è più corretta - vedere Иван Георгиев risposta per l'attuale modo di cambiare roba metà trascinare! – cacau