使用核心动画显式显示NSView
|
我正在尝试使用核心动画在ѭ0中滑动。我想我需要使用显式动画,而不是依赖诸如ѭ1之类的东西。这主要是因为我需要设置动画委托才能在动画完成后采取措施。
我使用动画器可以正常工作,但是正如我所说,动画结束时需要通知我。我的代码当前如下所示:
// 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 layer] setPosition:NSPointToCGPoint(endingPoint)];
与
[controlView setFrame:newFrame];
确实会导致视图(和图层)移动,但是它正在破坏某些东西,以至于我的应用不久后因段错误而死亡。
显式动画的大多数示例似乎只移动了CALayer
。必须有一种移动ѭ0的方法,并且还可以设置一个委托。任何帮助,将不胜感激。
没有找到相关结果
已邀请:
2 个回复
雄鞋谋塘
妊辽剁茧
当然,要使此代码正常工作,您需要确保视图及其超级视图都具有层次。如果超级视图没有图层,则图形会损坏。