Как я могу запустить Core Animation на прокси-сервере аниматора во время вызова resizeSubviewsWithOldSize? - PullRequest
3 голосов
/ 22 сентября 2008

У меня есть несколько NSView, которые я помещаю в одну из двух компоновок в зависимости от размера моего окна.

Я корректирую макет, когда соответствующий суперпредставление получает метод resizeSubviewsWithOldSize.

Это работает, но я бы хотел оживить изменения. Естественно, я пытался вызвать прокси-сервер аниматора, когда устанавливал новые кадры, но анимация не запускалась, пока пользователь все еще перетаскивал. Если я отпущу мышь до того, как запланирована анимация, я смогу увидеть конец анимации, но ничего пока не получится. Я пытался убедиться, что для kCATransactionDisableActions установлено значение NO, но это не помогло.

Можно ли запустить новую анимацию и запустить ее во время изменения размера?

Ответы [ 2 ]

2 голосов
/ 14 октября 2008

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

Если вы можете контролировать цикл запуска, когда пользователь перетаскивает, поиграйте с режимами цикла запуска. Это заставит это работать. Я не думаю, что вы можете изменить это на стороне CA.

0 голосов
/ 29 сентября 2008

Это действительно не ответ, но я бы советовал не анимировать что-либо при перетаскивании, чтобы изменить размер окна. Экран уже анимируется (из окна движется) - дальнейшая анимация, вероятно, будет визуально запутанной и посторонней.

Эффекты CoreAnimation лучше всего использовать для перехода из одного известного состояния в другое - например, когда окно предпочтений изменяет размеры, чтобы сопровождать содержимое новой панели, и вы знаете как старый, так и новый размеры, или когда вы затеняете объект вход или выход (или оба). Выполнение анимации во время изменения размера окна может привести к путанице в визуальном плане, и пользователю будет сложнее сосредоточиться на получении размера окна там, где он этого хочет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...