我試圖在使用核心動畫的NSView
中滑動。我認爲我需要使用明確的動畫,而不是依賴諸如[[view animator] setFrame:newFrame]
之類的東西。這主要是因爲我需要設置動畫委託才能在動畫完成後採取行動。使用核心動畫顯式動畫的NSView
我把它用動畫師工作得很好,但正如我所說的,我需要在動畫結束通知。我的代碼目前的樣子:
// Animate the controlView
NSRect viewRect = [controlView frame];
NSPoint startingPoint = viewRect.origin;
NSPoint endingPoint = startingPoint;
endingPoint.x += viewRect.size.width;
[[controlView layer] setPosition:NSPointToCGPoint(endingPoint)];
CABasicAnimation *controlPosAnim = [CABasicAnimation animationWithKeyPath:@"position"];
[controlPosAnim setFromValue:[NSValue valueWithPoint:startingPoint]];
[controlPosAnim setToValue:[NSValue valueWithPoint:endingPoint]];
[controlPosAnim setDelegate:self];
[[controlView layer] addAnimation:controlPosAnim forKey:@"controlViewPosition"];
這個視覺工作(和我在最後通知),但它看起來像實際controlView沒有得到感動。如果我導致窗口刷新,controlView消失。我試着用
[controlView setFrame:newFrame];
更換
[[controlView layer] setPosition:NSPointToCGPoint(endingPoint)];
而且確實會導致視圖(和層)移動,但它破壞的東西,使得我的應用程序與賽格故障去世不久。
最明確動畫的例子似乎只能移動CALayer
。必須有辦法移動NSView
並且也可以設置委託。任何幫助,將不勝感激。
感謝您的回覆。我確實通過對代碼進行了一些重新安排來完成這項工作。我認爲蘋果在WWDC期間的例子告訴你在設置動畫之前操縱視圖*。那麼你如何使用動畫師來使用代表?我已經搜索了很多關於這方面的例子,並且空着。我也看到許多帖子說這是不可能的。 – btschumy 2011-05-23 16:54:55
將代理設置爲您的controlPosAnim,將其添加到controlView的動畫中,將調用委託方法。 – 2011-05-24 22:36:58
好的感謝信息 – btschumy 2011-05-25 15:50:42