objective-c – 为什么我的CATransaction不遵守我设定的持续时间?

objective-c – 为什么我的CATransaction不遵守我设定的持续时间?,第1张

概述我正在将iPhone应用程序移植到Mac OS X.此代码已在iPhone上成功使用: - (void) moveTiles:(NSArray*)tilesToMove { [UIView beginAnimations:@"tileMovement" context:nil]; [UIView setAnimationDuration:0.1]; [UIView se 我正在将iPhone应用程序移植到Mac OS X.此代码已在iPhone上成功使用:

- (voID) moveTiles:(NSArray*)tilesToMove {    [UIVIEw beginAnimations:@"tileMovement" context:nil];    [UIVIEw setAnimationDuration:0.1];      [UIVIEw setAnimationDelegate:self];    [UIVIEw setAnimationDIDStopSelector:@selector(tilesstoppedMoving:finished:context:)];    for( NSNumber* aNumber in tilesToMove ) {        int tileNumber = [aNumber intValue];        UIVIEw* aVIEw = [self vIEwWithTag:tileNumber];        aVIEw.frame = [self makeRectForTile:tileNumber];    }    [UIVIEw commitAnimations];}

Mac版本使用CATransaction对动画进行分组,如下所示:

- (voID) moveTiles:(NSArray*)tilesToMove {    [CATransaction begin];    [CATransaction setAnimationDuration:0.1];    [CATransaction setAnimationTimingFunction:[camediatimingFunction functionWithname:kcamediatimingFunctionEaseInEaSEOut]];    [CATransaction setCompletionBlock:^{        [gameDelegate tilesMoved];    }];    for( NSNumber* aNumber in tilesToMove ) {        int tileNumber = [aNumber intValue];        NSVIEw* aVIEw = [self vIEwWithTag:tileNumber];        [[aVIEw animator] setFrame:[self makeRectForTile:tileNumber]];    }    [CATransaction commit];}

动画执行正常,但持续时间为1.0秒.我可以更改setAnimationDuration:调用任何东西,或者完全省略它,并且每次动画的持续时间仍为1.0秒.我也不认为setAnimationTimingFunction:call正在做任何事情.但是,setCompletionBlock:正在运行,因为该块在动画完成时正在执行.

我在这做错了什么?

解决方法 如果我没有弄错你就不能使用CoreAnimation直接为NSVIEw制作动画.为此你需要NSAnimationContext和[NSVIEw animator]. CATransaction仅适用于CALayers. 总结

以上是内存溢出为你收集整理的objective-c – 为什么我的CATransaction不遵守设定的持续时间?全部内容,希望文章能够帮你解决objective-c – 为什么我的CATransaction不遵守我设定的持续时间?所遇到的程序开发问题。

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

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

原文地址: https://outofmemory.cn/web/1004280.html

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

发表评论

登录后才能评论

评论列表(0条)

保存