objective-c – CABasicAnimation没有任何影响

objective-c – CABasicAnimation没有任何影响,第1张

概述我有一个非常简单的问题,我把头发拉过来.我试图动画NSButton的移动.现在,我意识到这几乎过于简单: [[button animator] setFrame:newCGRect]; 但是,我想增加按钮行进所需的时间.所以,我研究了稍微复杂的CABasicAnimation.我想我正在做的一切都正确,但NSButton根本就没有动. CGPoint center = CGPointMake(10 我有一个非常简单的问题,我把头发拉过来.我试图动画NSbutton的移动.现在,我意识到这几乎过于简单:

[[button animator] setFrame:newCGRect];

但是,我想增加按钮行进所需的时间.所以,我研究了稍微复杂的CABasicAnimation.我想我正在做的一切都正确,但NSbutton根本就没有动.

CGPoint center = CGPointMake(10,20);CALayer *layer = button.layer;layer.position = CGPointMake(button.frame.size.wIDth / 2,button.frame.size.height / 2);CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"position"];animation.fromValue = [layer valueForKey:@"position"];[animation setTovalue:[NSValue valueWithPoint:center]];[animation setFillMode:kCAFillModeForwards];[animation setRemovedOnCompletion:NO];[animation setDuration:3.0];[layer addAnimation:animation forKey:@"position"];

这里,按钮是NSbutton.我正在将图层的位置设置到按钮的中心,因为我认为“位置”必须指向中心.然后,我正在做的就是移动(据说)按钮到中心,在一个3秒长的动画中.我将动画添加到图层,然后没有任何反应.

现在,有人知道我做错了什么吗?或者,在旁注中,无论如何都使用动画属性并设置动画的长度?

解决方法@H_419_26@ 在事务中包装隐式动画以调整动画.

[CATransaction begin];[CATransaction setAnimationDuration:3];[[button animator] setFrame:newframe];[CATransaction commit];
总结

以上是内存溢出为你收集整理的objective-c – CABasicAnimation没有任何影响全部内容,希望文章能够帮你解决objective-c – CABasicAnimation没有任何影响所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1004887.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存