5

В настоящее время я вношу последние штрихи в проект.Animating setHidden: на NSView через привязки какао

Многие (если не все) логики пользовательского интерфейса в настоящее время полагаются на привязки какао. Некоторые элементы пользовательского интерфейса (метки, кнопки и т. Д.) Имеют свои «скрытые» привязки. Когда запускаются определенные события, видимость этих элементов переключается.

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

Я попробовал реализацию с помощью действия слоя, путем определения действий для ключей kCAOnOrderIn и kCAOnOrderOut на соответствующих элементах, но это действительно не работает, так как setHidden:, скорее всего, которые инициированы на NSView вместо CALayer - - что имеет смысл.

Итак, мой вопрос: как бы вы анимировали setHidden: на NSView, когда setHidden: вызывается привязками какао.

спасибо.

ответ

0

Анимация setHidden не будет иметь визуального эффекта, так как он включен или выключен. Если вы хотите оживить видимость, вместо этого используйте setAlpha (или setOpacity на слое). Они принимают значение от 0,0 до 1,0. Если вам нужен скрытый флаг для установки для информации о состоянии, вызовите -performSelector:withObject:afterDelay, передав ему селектор, который устанавливает скрытое значение в нужное вам значение после анимация завершена. В качестве альтернативы вы можете настроить делегат для явной анимации, чтобы быть вызванным назад, когда анимация заканчивается и затем вызывает setHidden.

+0

'setHidden:' на CALayer * * является анимируемым. В действии по умолчанию для клавиш ввода/вывода порядок использует CAT-переход, в результате чего непрозрачность слоев анимации. – phluid

+0

Да. Скрытый анимативен в том смысле, что вы можете изменить значения, однако есть только два возможных значения. Core Animation интерполирует промежуточные значения. С скрытым, это либо ДА, либо НЕТ. Но похоже, что вы хотите, чтобы он автоматически запускал анимацию fade при вызове setHidden. Это верно? Если это так, я не думаю, что вы можете сделать это только с привязкой. Вероятно, вам придется писать код. Вы можете попытаться привязать свойство alpha и установить его на 0 или 1. Кажется, это может дать вам желание, которое вы ищете, но я не уверен, как у вас есть что-то связанное. –

0

Предлагаю взглянуть на NSViewAnimation. Он принимает любой NSView и может анимировать рамку, размер или видимость.

2

Это будет исчезать в NSView ...

[[someView animator] setAlphaValue:0.0f]; 
Смежные вопросы