Анимация setHidden: в NSView через привязки Какао - PullRequest
5 голосов
/ 03 февраля 2011

В настоящее время я делаю последние штрихи к проекту.

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

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

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

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

Спасибо.

Ответы [ 3 ]

2 голосов
/ 28 апреля 2012

Это приведет к исчезновению NSView ...

[[someView animator] setAlphaValue:0.0f];
0 голосов
/ 03 февраля 2011

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

0 голосов
/ 03 февраля 2011

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

...