Dlatego chcę przeciągnąć obiekt z jednego źródła do wielu potencjalnych miejsc docelowych. Kiedy obiekt znajduje się nad każdym miejscem docelowym, chcę, aby przekształcił się w inny obraz. Czy istnieje prosty sposób na zrobienie tego z perspektywy NSDragSource?Jak zmienić przeciągnięcie i upuszczenie obrazu w połowie przeciągnięcia?
Odpowiedz
Nie można tego zrobić, korzystając tylko z interfejsów API źródeł drag.
Jeśli spojrzysz na Interface Builder, robi to coś, co chcesz. Po przeciągnięciu przycisku z biblioteki przycisk uruchamia się w środku przeciągania.
Według większości ludzi sposób, w jaki robi to firma Apple, polega na tym, że obraz przeciągania staje się małym przezroczystym obrazem. Następnie tworzą okno i każą podążać za myszą. Następnie możesz użyć tego okna do wykonania dowolnego rodzaju animacji.
Joshua Nozzi opublikował świetny sposób, aby to zrobić: http://joshua.nozzi.name/2009/10/jlndrageffectmanager/
Tak. To jest menedżer kropli dla tego konkretnego efektu. Pobieranie zawiera aplikację demonstracyjną. –
Jeśli skończysz używać tej klasy, daj mi znać, a dodam ją do listy na stronie źródłowej. –
Check out enumerateDraggingItemsWithOptions metodę NSDraggingInfo użytkownika.
Edytuj swoją odpowiedź, aby rozwinąć: W jaki sposób użyjesz tej metody, aby rozwiązać ten problem? –
Można to zrobić za pomocą metody enumerateDraggingItemsWithOptions:
z NSDraggingInfo
w metodach obsługi przeciągania miejsca docelowego (np. - implementacja protokołu NSDraggingDestination
).
Na przykład:
- (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. Jak zmienić rozmiar obrazu poprzez przeciągnięcie
- 2. Jak zmienić jasność obrazu?
- 3. pyCairo: Jak zmienić rozmiar i położenie obrazu?
- 4. Xcode: Jak zmienić wartość UIPageControl za pomocą gestu przeciągnięcia?
- 5. Jak zmienić przezroczystość obrazu.
- 6. Jak rozpocząć pomiar w połowie?
- 7. Tworzenie prostokąta w formacie xml z jednym gradientem w górnej połowie i drugim w dolnej połowie
- 8. upuszczenie globalnego tabeli tymczasowej
- 9. Jak zmienić etykiety osi obrazu
- 10. Jak zmienić rozmiar obrazu UIBarButtonItem
- 11. jak zmienić rozmiar obrazu gif w android
- 12. Jak zmienić rozmiar obrazu w systemie Android?
- 13. Jak zmienić rozmiar obrazu w Java?
- 14. Jak zmienić rozmiar obrazu widoku obrazu w javafx?
- 15. Ruchome okno poprzez kliknięcie i przeciągnięcie kontrolki
- 16. Kliknięcie i przeciągnięcie myszy Event WPF
- 17. Wysokość w połowie wypełnienie_parent xml
- 18. Jak przewinąć ostatnie przeciągnięcie, takie jak Tinder
- 19. Błąd przeciągnięcia dokera
- 20. Jak zmienić rozmiar obrazu bez utraty jakości?
- 21. Jak zmienić kolor obrazu za pomocą jquery
- 22. Jak mogę zmienić rozdzielczość obrazu z rozszerzeniem obrazu?
- 23. Jak zmienić lokalizację obrazu ekranu powitalnego?
- 24. Jak zmienić rozmiar obrazu kciuka UISlider programowo
- 25. Jak programowo zmienić rozmiar obrazu ImageView
- 26. jak wymienić/zmienić przycisk obrazu programowo Android
- 27. Jak proporcjonalnie zmienić rozmiar obrazu na płótnie?
- 28. Jak zmienić kolor obrazu po najechaniu myszą
- 29. SSL jest w połowie symetryczny i pół asymetryczny?
- 30. Obsługa zdarzeń przeciągnięcia w Sencha Touch 2
Przynajmniej jak z 10.7+ przyjętą odpowiedź nie jest prawidłowa - patrz Иван Георгиев odpowiedź dla obecnego sposobu, aby zmienić rzeczy w połowie przeciągnij! – cacau