Какао: Как превратить изображение перетаскивания при перетаскивании

В Интерфейсном Builder.app (и некоторые другие приложения какао), перетаскивание изображения имеет очень хороший/сексуальный эффект превращения изображения перетаскивания при перетаскивании перемещаемого объекта из его окна.

Например, в Интерфейсном Buildler.app:

  1. Покажите Палитру Библиотеки (⇧⌘ L, или Меню Инструментов-> Библиотека)
  2. Перетащите объект из палитры Library

Примечание: поскольку Вы перетаскиваете объект из окна Library Palette, он превращается из изображения исходного элемента списка к изображению значка перетащенного объекта.

Я полностью реализовал перетаскивание в своем Приложении с помощью нормального Какао средства NSDragSource/NSDragDestination.

Однако я не могу найти рычаг для того, чтобы сделать этот морф изображения при перетаскивании. Я возвращаю первоначальное изображение перетаскивания путем переопределения

-[NSView dragImage:at:offset:event:pasteboard:source:slideBack:]

Но это только называют в начале перетаскивания.

Как Вы предупреждаете, что требуется заменить текущее изображение перетаскивания (идеально использующий сексуальный эффект морфа).

6
задан Todd Ditchendorf 15 February 2010 в 23:09
поделиться

3 ответа

Ребята, вы меня опередили :-)

Да, JLNDragEffectManager с открытым исходным кодом (с указанием авторства в ваших приложениях, пожалуйста) и доступен в моем блоге. Он должен отлично работать как есть без изменений до версии 10.5, но я не уверен, что дальше. На него ссылались другие (и его легко найти в гугле), поэтому, чтобы избежать самодовольных ссылок на блог, я оставлю все как есть.

Проблемы: Один из разработчиков прокомментировал (и предоставил код для исправления) отсутствие поддержки смещения при перетаскивании. Я просто не успел опубликовать обновление. Это единственная нерешенная проблема, о которой я знаю.

Улучшения: Я бы хотел добавить несколько "зон" (скажем, по одной на документ, чтобы при перетаскивании из документа в документ строки таблицы выглядели как строки таблицы, но в любом месте за пределами окна документа они превращались в значок файла, как в HFS Promise Drag). Когда-нибудь ...

Дизайн: В самом посте подробно описано обоснование дизайна и относительно простой эффект морфинга (перекрестное переключение и размер анимируются с помощью базовой NSAnimation и т.д.). Код (класс, а также демонстрационное приложение) подробно разобран и прокомментирован.

Не буду ссылаться на свой пост, но буду рад карме в виде upvotes за мои усилия. ;-)

UPDATE: Аналогичная (но лучше интегрированная) функциональность доступна в версии 10.7. Если вы используете версию 10.7 или выше, лучше использовать новый API. JLNDragEffectManager прекрасно работает в 10.7, поэтому его можно использовать для более ранних версий.

12
ответ дан 8 December 2019 в 05:54
поделиться

API не поддерживает это хорошо. Джошуа Ноцци приводит метод, который выглядит разумным в этой записи в блоге .

Эффект ИБ не такой уж фантастический. Это кроссфейд и масштаб. Удерживайте Shift, чтобы увидеть это более четко.

3
ответ дан 8 December 2019 в 05:54
поделиться

JNLDragEffectManager делает именно это. :)

5
ответ дан 8 December 2019 в 05:54
поделиться