代码之家  ›  专栏  ›  技术社区  ›  mazniak

CatTransaction未设置动画

  •  2
  • mazniak  · 技术社区  · 17 年前

    我在Xcode中创建了一个新的基于视图的应用程序。

    在ViewController中,我修改过的唯一代码如下:

    - (void)viewDidLoad {
    [super viewDidLoad];
    
    UIView *newView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 200, 200)];
    newView.backgroundColor = [UIColor redColor];
    [self.view addSubview:newView];
    
    
    [CATransaction begin];
    [CATransaction setValue:[NSNumber numberWithFloat:0.5f] forKey:kCATransactionAnimationDuration];
    
    newView.layer.frame = CGRectMake(20,20,220,220);
    
    [CATransaction commit];
    }
    

    它应该创建一个红色的方块,一旦应用程序加载,它就会显示半秒钟的动画。问题是它没有动画。我不明白为什么。我创建了这个简单的项目来隔离所有变量,但它仍然不起作用。

    有人能帮助我或指出一些核心动画阅读材料的正确方向吗?我已经看完了苹果所有的东西。

    2 回复  |  直到 14 年前
        1
  •  5
  •   Brad Larson    17 年前

    如果您在一个calayer上设置属性,您的代码将按预期进行动画制作(默认情况下,它们是动画制作的)。对于要设置动画的ui视图,必须在块内更改其属性,如下所示:

    [UIView beginAnimations:nil context:NULL];
    [UIView setAnimationDuration:1.0f];
    
    // Change properties here
    
    [UIView commitAnimations];
    

    catTransactions用于对动画进行分组,以便对它们进行协调,或者手动禁用一组对象的动画。

        2
  •  0
  •   Alex Reynolds    17 年前

    有人能帮助我或指出一些核心动画阅读材料的正确方向吗?我已经看完了苹果所有的东西。

    见: Core Animation for Mac OS X and the iPhone: Creating Compelling Dynamic User Interfaces 对于视图和层上的核心动画的出色演练。