Есть ли способ сделать NSAnimation «Начни с текущего состояния», как на iPhone? - PullRequest
2 голосов
/ 27 января 2011

Я хочу переместить вид в другое положение при изменении размера окна.В настоящее время я делаю это с NSViewAnimation при получении NSWindowDidResizeNotification.

// Create the view animation object.
theAnim = [[NSViewAnimation alloc] initWithViewAnimations:animation];
// Set some additional attributes for the animation.
[theAnim setDuration:1];    // One and a half seconds.
[theAnim setAnimationCurve:NSAnimationEaseIn];
[theAnim setFrameRate:20.0];
[theAnim setAnimationBlockingMode:NSAnimationNonblocking];
// Run the animation.
[theAnim startAnimation];
// The animation has finished, so go ahead and release it.
[theAnim release]; 

("animation" - это массив с dict, содержащим новый прямоугольник для моего представления, как этого хочет NSAnimation) Этот код вызывается несколько раз, когда яизменить размер окна.Поэтому при изменении размера этот код вызывается примерно 20 раз за одно изменение.Теперь у меня есть 20 анимаций движущегося вида.20 разных перекрываются.(Похоже на много разных представлений, но я думаю, что это одно и то же, переключаясь между анимациями)

На iPhone было бы только перемещение представления, и я мог бы установить [UIView setAnimationBeginsFromCurrentState: YES], и это будет работать.Есть ли способ сделать это на OSX?Я мог бы создать переменную isAnimating в представлении, но затем он переместился бы только на одну позицию и игнорировал бы быстрое изменение размера во время анимации.

Как мне сделать это в OSX?Спасибо

1 Ответ

3 голосов
/ 10 февраля 2011

Я только что сделал [[album.view аниматор] setFrame: newFrame];и он переехал туда.Красивая.(Могу ли я добавить, как это удивительно!)

...