gpt4 book ai didi

objective-c - CABasicAnimation 没有任何效果

转载 作者:太空狗 更新时间:2023-10-30 03:51:26 24 4
gpt4 key购买 nike

我有一个非常简单的问题,我正在为它拔头发。我正在尝试为 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 秒长的动画中(据推测)将按钮移动到中心。我将动画添加到图层,然后什么也没有发生。

现在,有人知道我做错了什么吗?或者,附带说明一下,是否可以使用动画制作器属性设置动画的长度?

最佳答案

将隐式动画包装在事务中以调整动画。

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

关于objective-c - CABasicAnimation 没有任何效果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7940209/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com