
我使用动画师工作得很好,但正如我所说,我需要在动画结束时收到通知.我的代码目前看起来像:
// Animate the controlVIEwNSRect 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];
这确实会导致视图(和图层)移动,但它会破坏某些东西,以至于我的应用程序很快就会因为seg故障而死亡.
显式动画的大多数示例似乎只是移动CALayer.必须有一种方法来移动NSVIEw并且还能够设置委托.任何帮助,将不胜感激.
解决方法 我认为你需要在结束时调用setposition(在设置动画之后).此外,我认为你不应该明确地为视图层设置动画,而是通过使用动画设置动画来设置视图.您也可以使用动画师代表:)
// create controlPosAnim[controlVIEw setAnimations:[NSDictionary dictionaryWithObjectsAndKeys:controlPosAnim,@"frameOrigin",nil]];[[controlVIEw animator] setFrame:newFrame];总结
以上是内存溢出为你收集整理的cocoa – 使用核心动画显式动画NSView全部内容,希望文章能够帮你解决cocoa – 使用核心动画显式动画NSView所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)