首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >cocoa:可可中的哪个方法与animateWithDuration:animations:completion:?

cocoa:可可中的哪个方法与animateWithDuration:animations:completion:?
EN

Stack Overflow用户
提问于 2012-08-17 16:52:52
回答 1查看 768关注 0票数 1

我可以在mac os cocoa中使用animator实现一个动画,比如

代码语言:javascript
复制
[[view animator] setFrame:newFrame];

但我的问题是,我必须动画一些点,这是视图的属性。我可以像下面的iPhone代码那样做:

代码语言:javascript
复制
[UIView animateWithDuration:0.3 animations:^{
                                for (Point point in self.points) {
                                    point.x += 10;
                                }
                           } completion:^(BOOL finished) {

                                }];
                            }];

我想知道如何在mac ox cocoa中做到这一点?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-08-17 18:37:44

通常,对于NSView动画,您必须覆盖动画制作人员使用的标准动画。

代码语言:javascript
复制
CABasicAnimation* animation = [CABasicAnimation animation];
animation.delegate = yourDelegate;
NSDictionary *animations = [NSDictionary dictionaryWithObjectsAndKeys:animation,@"frameSize",nil];
[view setAnimations:animations];

动画的关键是要设置动画的属性。

如果你不需要委托,你可以使用这样的代码:

代码语言:javascript
复制
[CATransaction begin];
[CATransaction setAnimationDuration:0.5];
[CATransaction setAnimationTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut]];
[[view animator] setFrameOrigin:origin];
[CATransaction commit];

如果您需要更复杂的动画,您可以创建一个覆盖窗口与层托管内容视图和动画层内的一个视图截图。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12002697

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档